전공지식
[C언어] 스택[Stack] 구현하기
Lim-Ky
2019. 5. 17. 21:27
반응형
C언어로 스택 구현하기
우선 스택을 구현하기 위해 배열이 필요하다.
여기선, 미리 크기를 정한 배열을 이용하여, 스택을 구현해본다.
#include<stdio.h>
#include<stdlib.h>
#define SIZE 10
//스택 구조체
typedef struct stack {
int arr[SIZE];
int top;
};
void stack_init(stack *pstack) {
pstack -> top = -1;
}
//스택이 비어있는지 체크
bool isEmpty(stack *pstack) {
if (pstack->top == -1) {
return true;
}
return false;
}
//삽입
void push(stack *pstack, int data) {
pstack->top += 1;
pstack->arr[pstack->top] = data;
}
//삭제
void pop(stack *pstack){
if (isEmpty(pstack) == true) {
printf("stack is empty..");
}else{
printf("pop : %d\n", pstack->arr[pstack->top]);
pstack->top -= 1;
}
}
//맨위 값 출력
void peek(stack *pstack) {
if (isEmpty(pstack) == true) {
printf("stack is empty..");
exit(-1);
}else {
printf("peek : %d\n", pstack->arr[pstack->top]);
}
}
//배열 스택을 출력
void print(stack *pstack) {
if (isEmpty(pstack) == true) {
printf("stack is empty..");
exit(-1);
}
else {
for (int i = 0; i <= (pstack->top); i++) {
printf("%d번째 %d\n", (i+1),pstack->arr[i]);
}
}
}
int main() {
stack stack;
stack_init(&stack);
push(&stack, 1);
push(&stack, 4);
push(&stack, 5);
push(&stack, 3);
push(&stack, 2);
print(&stack);
pop(&stack);
peek(&stack);
return 0;
}반응형