80 lines
No EOL
1.2 KiB
Text
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;
|
|
} |