[c언어] 스택의 구현
스택은 후입선출(LIFO, Last In First Out) 구조를 가진 자료구조로, 데이터를 쌓아 올리고(push) 꺼내기(pop) 용이한 특징을 갖고 있습니다. C 언어를 사용하여 스택을 구현하는 방법에 대해 알아보겠습니다.
스택의 구조
스택은 배열을 기반으로 구현할 수 있습니다. 간단한 방식으로 스택을 구현해 보겠습니다.
- 스택의 크기를 정의합니다.
- 스택에 들어갈 데이터 형식을 정의합니다.
- 스택의 top(꼭대기)을 가리킬 변수를 정의합니다.
- 스택을 초기화합니다.
- push와 pop 함수를 작성합니다.
#define MAX_SIZE 100
typedef int Item;
typedef struct {
Item data[MAX_SIZE];
int top;
} Stack;
void init(Stack *stack) {
stack->top = -1;
}
void push(Stack *stack, Item data) {
if (stack->top < MAX_SIZE - 1) {
stack->data[++stack->top] = data;
} else {
printf("스택이 가득 찼습니다.");
}
}
Item pop(Stack *stack) {
if (stack->top >= 0) {
return stack->data[stack->top--];
} else {
printf("스택이 비었습니다.");
return -1;
}
}
사용 예제
int main() {
Stack stack;
init(&stack);
push(&stack, 10);
push(&stack, 20);
push(&stack, 30);
printf("%d\n", pop(&stack)); // 30
printf("%d\n", pop(&stack)); // 20
printf("%d\n", pop(&stack)); // 10
printf("%d\n", pop(&stack)); // 스택이 비었습니다.
return 0;
}
이처럼 C 언어를 사용하여 스택을 간단하게 구현할 수 있습니다. 스택을 활용하면 다양한 자료구조와 알고리즘을 구현할 수 있어 유용합니다.