forked from NajwaLaabid/OpenDSA
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAStack.h
76 lines (63 loc) · 2.05 KB
/
AStack.h
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
#include "Stack.h"
#include <iostream>
#include <string>
using namespace std;
/* *** ODSATag: AStack *** */
// Array-based stack implementation
/* *** ODSATag: AStackVars *** */
class AStack : public Stack{
StackItemType stackArray[MAX_SIZE]; // Array holding stack elements
const int stack_size = MAX_SIZE; // Current number of list items
int top; // Position of top element of stack
/* *** ODSAendTag: AStackVars *** */
public:
// Constructor
// Create a new stack element of size "size"
AStack(int size) : stack_size(size), top(0) {
// Initialize the array
for (int i = 0; i < stack_size; i++) stackArray[i] = 0;
} // End constructor
// Default constructor
// Create stack in MAX_SIZE
AStack() : stack_size(MAX_SIZE) {
// Initialize the array
for (int i = 0; i < stack_size; i++) stackArray[i] = 0;
}// End default constructor
// Checks if stack is empty
bool isEmpty() {
return !top;
}
// Reinitializes stack
void clear() {
top = 0; // Simply reinitialize top
}
// Returns the stack in a string form
string toString() {
string str = "< ";
for (int i = top-1; i >= 0; i--) str = str + to_string(stackArray[i]) + " ";
str = str + ">";
return str;
}
/* *** ODSATag: AStackPush *** */
// Adds newItem to stack
bool push(const StackItemType& newItem) {
if (top == stack_size) return 0; // Stack full, cannot push
else {
stackArray[top++] = newItem;
return 1; // Push successful
}
}
/* *** ODSAendTag: AStackPush *** */
/* *** ODSATag: AStackPop *** */
//Returns top element in stack and deletes it afterwards
StackItemType pop() {
if (!isEmpty()) return stackArray[--top];
else return (StackItemType) -1;
}
/* *** ODSAendTag: AStackPush *** */
//Returns top element (without deleting it)
StackItemType topValue() { return stackArray[top-1]; }
//Returns current length of stack
int length() { return top; }
/* *** OpenDSAendTag: Atack *** */
};