스택 (stack)

쌓아올리며 후입선출하는 자료 구조 어셈블러에서부터 고급 언어까지 꼭 필요한 녀석
 

원리

 

구현

배열

#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; }