#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <cstdlib>
#define MAX 10
typedef struct {
int* buffer;
int count;
int head;
int top;
} Stack;
void info(Stack *s) {
printf("Head value: %d\n", s->buffer[s->head - 1]);
printf("Head index: %d\n", s->head);
printf("Count: %d\n", s->count);
}
void push(Stack* s, int x) {
if(s->count == MAX)
{
printf("Stack Overflow\n");
return;
}
s->count++;
s->buffer[s->head] = x;
s->head++;
}
void pop(Stack* s) {
if(s->count == 0) {
printf("Stack Underflow\n");
return;
}
printf("%d\n", s->buffer[s->head - 1]);
s->count--;
s->head--;
}
void process_stack(int n) {
// Your logic here
Stack s = {0};
s.buffer = (int *)malloc(MAX*sizeof(int));
while(n--) {
char cmd[10];
scanf("%s", cmd);
if(strcmp(cmd,"push") == 0) {
int param=0;
scanf("%d",¶m);
push(&s,param);
} else {
pop(&s);
}
// info(&s);
}
}
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