#include <stdio.h>
#include <stdint.h>
#include <string.h>
#define MAX 10
typedef struct {
int storage[MAX];
int head;
int count;
} stack_s;
void stack_pop(stack_s* stack) {
if (stack->count == 0) {
printf("Stack Underflow\n");
return;
}
printf("%d\n", stack->storage[--stack->head]);
stack->count--;
}
void stack_push(stack_s* stack, int value) {
if (stack->count == MAX) {
printf("Stack Overflow\n");
return;
}
stack->storage[stack->head++] = value;
stack->count++;
}
void process_stack(int n) {
stack_s stack = {0};
char cmd[5];
int value;
for (int i = 0; i < n; i++) {
scanf("%s", &cmd);
if (strcmp(cmd, "push") == 0) {
scanf("%d", &value);
stack_push(&stack, value);
}
else if (strcmp(cmd, "pop") == 0) {
stack_pop(&stack);
}
}
}
int main() {
int n;
scanf("%d", &n);
getchar(); // Consume newline after number
process_stack(n);
return 0;
}
Input
5 push 10 push 20 pop pop pop
Expected Output
20 10 Stack Underflow