CS153/hw6/hw5programs/sp22_tests/stack.oat
jmug ee01a8f5b2 Change hw6 to an unsolved version.
Signed-off-by: jmug <u.g.a.mariano@gmail.com>
2025-01-24 23:10:01 -08:00

80 lines
No EOL
1.2 KiB
Text

struct Node {
int data;
Node? next;
bool hasNext
}
struct Stack {
Node? top;
int size
}
Node createNode (int data) {
return new Node {data = data; next = Node null; hasNext = false};
}
Stack initializeStack() {
return new Stack {top = Node null; size = 0};
}
bool isEmpty (Stack s) {
if (s.size == 0) {
return true;
} else {
return false;
}
}
int pop (Stack s) {
if (!isEmpty(s)) {
var prevTop = s.top;
s.top = prevTop.next;
s.size = s.size - 1;
return prevTop.data;
}
print_string("Stack is empty!");
return 0;
}
void push (Stack s, int val) {
var prevTop = s.top;
var n = createNode(val);
n.next = prevTop;
s.top = n;
s.size = s.size + 1;
return;
}
int peek (Stack s) {
if (!isEmpty(s)) {
return s.top.data;
}
print_string("Stack is empty!");
return 0;
}
int program (int argc, string[] argv) {
var s = initializeStack();
push(s, 1);
push(s, 2);
push(s, 3);
push(s, 4);
for (var i = 4; i > 0; i = i - 1;) {
var curr = pop(s);
if (curr != i) {
return -1;
}
}
return 0;
}