#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 10 // Tăng lên 100 cho an toàn, 10 hơi ít
typedef struct {
int arr[MAX];
int top; // Không gán = -1 ở đây được trong C cũ
} stack;
// Hàm khởi tạo stack (để gán top = -1)
void init_stack(stack *s) {
s->top = -1;
}
void push_stack(stack *a, int n) {
if (a->top == MAX - 1) {
printf("Stack Overflow\n"); // Thêm \n
return;
}
a->top++;
a->arr[a->top] = n;
}
void pop_stack(stack *a) {
if (a->top == -1) {
printf("Stack Underflow\n"); // Thêm \n
return;
}
// Sửa a->arr[top] thành a->arr[a->top]
printf("%d\n", a->arr[a->top]);
a->top--;
}
void process_stack(int n) {
stack myStack;
init_stack(&myStack); // Khởi tạo top = -1
char cmd[10]; // Biến lưu chữ "push" hoặc "pop"
int val;
for (int i = 0; i < n; i++) {
scanf("%s", cmd); // Đọc lệnh
// So sánh chuỗi lệnh
if (strcmp(cmd, "push") == 0) {
scanf("%d", &val); // Nếu là push, đọc thêm số tiếp theo
push_stack(&myStack, val);
}
else if (strcmp(cmd, "pop") == 0) {
pop_stack(&myStack);
}
}
}
int main() {
int n;
if (scanf("%d", &n) != 1) return 0; // Kiểm tra đọc n thành công
process_stack(n);
return 0;
}
Input
5 push 10 push 20 pop pop pop
Expected Output
20 10 Stack Underflow