
스택은 배열이나 연결리스트로 구현할 수 잇다.
- 배열로 구현할 경우에는 간단한 장점을 가지고 있으나, 스택의 크기가 고정 돼 정보의 수가 많을 때 좋지 않다는 단점을 가지고 있다.
- 연결리스트는 구현이 복잡한 반면, 스택의 크기를 필요에 따라 가변적으로 변경할 수 있다.
(나는 아직 연결리스트를 모르기 때문에 배열 구현위주로 볼 예정)
#include <stdio.h>
#include <stdlib.h>
int top = -1; // 아무것도 들어있지 않은 상태
int stack[5];
void push(int num) {
if (top == 4) {
printf("스택이 가득 찼습니다.");
return;
}
else {
top++;
stack[top] = num;
}
}
int pop() {
if (top == -1) {
printf("스택에 요소가 없습니다.");
return;
}
else {
return stack[top--];
}
}
int main() {
push(3);
push(2);
push(1);
printf("%d\n", pop());
printf("%d\n", pop());
printf("%d\n", pop());
return 0;
}