쌓아올리며 후입선출하는 자료 구조 어셈블러에서부터 고급 언어까지 꼭 필요한 녀석
#include <stdio.h>
const int MAX_ITEM = 100;
const int INIT_TOP = -1;
typedef struct {
int top;
char *str[MAX_ITEM];
} Stack;
void init(Stack *s) {
s->top = INIT_TOP;
}
int isEmpty(Stack *s) {
return s->top <= INIT_TOP;
}
int isFull(Stack *s) {
return s->top >= MAX_ITEM;
}
void push(Stack *s, char *str) {
if (isFull(s)) {
printf("Stack is full!\\n");
return;
}
s->top++;
s->str[s->top] = str;
}
char *pop(Stack *s) {
if (isEmpty(s)) {
return NULL;
}
char *result = s->str[s->top];
s->top--;
return result;
}
int main(void) {
// insert code here...
Stack s;
init(&s);
push(&s, "Foo");
push(&s, "bar");
printf("%d\\n", s.top);
puts(pop(&s));
puts(pop(&s));
return 0;
}