C언어 문서화
(C언어)15. 스택(stack)
Mosu(정종인)
2016. 5. 8. 19:05
반응형
<스택>
스택은 자료구조 중 하나이다.
특징 :
1. 먼저 들어온 데이터가 더 늦게 나간다.
2. 반대로 말하면 늦게 들어올수록 더 빨리 나간다는 것이다.
그림 설명 :
공간을 만들었다.
0을 PUSH 했다.
1을 PUSH했다
2를 PUSH했다
POP했더니 2가 나갔다
POP했더니 1이 나갔다
POP했더니 0이 나갔다
구현:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | #include <stdio.h> #include <stdlib.h> int stack[100];//stack선언, 모두 0으로 초기화 int cnt=0;//현재 자료의 개수 void push(int data, int *top){ if(cnt==100){ printf("warning : over flow\n"); return; } printf("\n\ndata : %d\n\n", data); stack[cnt]=data; ++cnt; top=&stack[(*top)++]; } void pop(int *top){ if(cnt==0){ printf("값이 없습니다.\n"); return; } else{ top=&stack[--cnt]; } } void show(){ int n; for(n=cnt; n>0; --n){ printf("%d ====> %d\n", n, stack[n-1]); } } int main(){ int i, input; int the_number_of_stack; int *top; int data; printf("기본 자료 개수 입력 : "); scanf("%d", &input); cnt+=input; for(i=0; i<input; ++i){ printf("stack[%d] : ", i); scanf("%d", &stack[i]); } top=&stack[input]; while(1){ printf("\n\n"); printf("0 : 종료\n"); printf("1 : PUSH\n"); printf("2 : POP\n"); printf("3 : SHOW\n"); printf("0~3 선택 : "); scanf("%d", &input); if(input==0){ return 0; } else if(input==1){ printf("data 입력 : "); scanf("%d", &data); push(data, top); } else if(input==2){ pop(top); } else if(input==3){ show(); } } } | cs |
반응형