반응형
SMALL
배열을 이용한 스택을 구현해보도록 하겠습니다.
설명은 주석을 참고해주시길 바랍니다.
#include <stdio.h>
#define MAX_N 100
int top;
int stack[MAX_N]; // 최대 스택 크기 100, index로는 0 ~ 99
void stackInit(void) {
top = 0;
}
int stackIsEmpty(void) {
return (top == 0); // top이 0이면 아무것도 없는 상태
}
int stackIsFull(void) {
return (top == MAX_N); // top이 100이 되어버리면 stack은 꽉 찬 상태
}
int stackPush(int value) {
if (stackIsFull()) { // stack이 꽉 찼다면 1을 받으니 if문이 실행됩니다.
printf("stack overflow!");
return 0;
}
stack[top] = value; // 집어넣고
top++; // top은 올라가고
return 1;
}
int stackPop(int* value) {
if (top == 0) {
printf("stack is Empty");
return 0;
}
top--; // 우선 top을 내리고
*value = stack[top]; // 주소값에 때려넣습니다.
return 1;
}
int main(void) {
int T, N;
scanf("%d", &T);
for (int t = 1; t <= T; ++t) {
scanf("%d", &N);
stackInit();
for (int i = 0; i < N; ++i) { // stack에 집어넣습니다.
int value;
scanf("%d", &value);
stackPush(value);
}
while (!stackIsEmpty()) { // stack에서 뽑아냅시다.
int value;
if (stackPop(&value) == 1) { // 1이면 value에 값이 들어간 상태입니다.
printf("%d ", value);
}
}
printf("\n");
}
return 0;
}
반응형
LIST
'C > 코드 리뷰' 카테고리의 다른 글
우선순위 큐 구현 (0) | 2019.08.15 |
---|---|
큐 구현 (원형 큐) (0) | 2019.08.15 |
Linked List 구현하기 (1) (0) | 2019.06.23 |
이진 탐색(Binary Search) 알고리즘과 시간 복잡도 분석 (0) | 2019.06.21 |
순차 탐색(Linear Search) 알고리즘과 시간 복잡도 분석 (0) | 2019.06.21 |