-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmaintenance_stack.cpp
More file actions
143 lines (126 loc) · 3.74 KB
/
Copy pathmaintenance_stack.cpp
File metadata and controls
143 lines (126 loc) · 3.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#include "program6.h"
//As Linked List
//Constructor
MaintenanceStack::MaintenanceStack()
{
pTop = nullptr;
}
//Destructor
MaintenanceStack::~MaintenanceStack()
{
MaintenanceRequest* pTemp;
while(!isEmpty())
{
pTemp = pTop;
pTop = pTop->pNext;
delete pTemp;
}
}
/*********************************************************************
bool isFull();
Purpose:
Returns true if the stack is full.
Parameters:
-
Return Value:
returns bool(false; as the linked list is never full)
Notes:
Always returns false as the linked list is never full.
*********************************************************************/
bool MaintenanceStack::isFull()
{
return false;
}
/*********************************************************************
bool isEmpty();
Purpose:
Returns true if the stack is empty.
Parameters:
-
Return Value:
returns true - if the linked list is empty
returns false - if the linked list is not empty
Notes:
-
*********************************************************************/
bool MaintenanceStack::isEmpty()
{
if(pTop == nullptr)
{
return true;
}
return false;
}
/*********************************************************************
void peekRequest();
Purpose:
Displays the most recent maintenance request without removing it
Parameters:
-
Return Value:
-
Notes:
If Stack is empty prints - "Maintenance stack is empty."
If Stack has requests prints in this format:
"Latest Request Number: <Request Number>, Description: <Issue>, Reported By: <Staff Name>"
*********************************************************************/
void MaintenanceStack::peekRequest()
{
if(isEmpty())
{
cout << "Maintenance stack is empty." << endl;
return;
}
//if the stack has requests
int iN = pTop->iRequestNumber;
string szI = pTop->szIssue;
string szR = pTop->szReporter;
cout << "Resolving Maintenance Request Number: " << iN;
cout << ", Issue: " << szI;
cout << ", Reported by: " << szR << endl;
}
/*********************************************************************
void pushRequest(int iReqNum, string szIssue, string szReporter);
Purpose:
Adds a maintenance request to the top of the stack.
Parameters:
I int iReqNum - maintenance request number
I string szIssue - description of the issue
I string szReporter - staff member reporting the issue
Return Value:
-
Notes:
No need to chech for overflow as the linked list is never full
*********************************************************************/
void MaintenanceStack::pushRequest(int iReqNum, string szIssue, string szReporter)
{
// No need to check for overflow
MaintenanceRequest* pNew = new MaintenanceRequest;
pNew->iRequestNumber = iReqNum;
pNew->szIssue = szIssue;
pNew->szReporter = szReporter;
// insert at pHead(pTop)
pNew->pNext = pTop;
pTop = pNew;
}
/*********************************************************************
string popRequest();
Purpose:
Removes the most recent maintenance request and returns a string
Parameters:
-
Return Value:
returns the string in the node pointed by pTop
Notes:
The format: "Resolving Request Number: <Request Number>, Description: <Issue>, Reported By: <Staff Name>"
*********************************************************************/
string MaintenanceStack::popRequest()
{
// Check for underflow
assert(!isEmpty()); //continue if the list is not empty
MaintenanceRequest* pTemp = pTop;
string szFormat = "Resolving Maintenance Request Number: " + to_string(pTemp->iRequestNumber) + ", Issue: " + pTemp->szIssue + ", Reported by: " + pTemp->szReporter;
pTop = pTop->pNext;
delete pTemp;
return szFormat;
}