자료구조_c언어_배열스택_arrayStack_01

2021. 2. 1. 09:15개발하는중/자료구조

728x90
반응형
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
73
74
75
76
77
78
79
80
81
82
83
#include <stdio.h>
#include <stdlib.h>
#define STACK_SIZE 100
 
typedef int element;
element stack[STACK_SIZE];
int top = -1;
 
void push(element item) {
    if (top >= STACK_SIZE - 1) {
        printf("\n\n Stack is Full\n");
        return;
    }
    else
        stack[++top] = item;    // 전위연산자로 top가 가르킨 공간에 데이터 입력
}
 
element pop() {
    if (top == -1) {
        printf("\n\n Stack id Empty\n");
        return 0;
    }
    else
        return stack[top--];    // top이 가르키는 대상 데이터 뺴고 후위연산자로 그전 데이터를 가르킨다
}
 
void del() {    // 데이터 내용 지우지 않고 이동만한것
    if (top == -1) {
        printf("\n\n Stack is Empty\n");
        exit(1);    // 강제종료
    }
    else
        top--;    
}
 
element peek() {    // 조회
    if (top == -1) {
        printf("\n\n Stack is Empty\n");
        exit(1);
    }
    else
        return stack[top];    // 현재 위치의 값 조회
}
 
void printStack() {
    int i;
    printf("\n STACK[");
    for (i = 0; i < top; i++) {
        printf("%d "stack[i]);
    }
    printf("]");
}
 
int main() {
    int item;
    printStack();
    push(1);
    printStack();
    push(2);
    printStack();
    push(3);
 
    item=peek();
    printStack();
    printf("\t peek top=>%d \n", item);
 
    del();
    printStack();
 
    item = pop();
    printStack();
    printf("\t pop top=>%d", item);
 
    pop();
    printStack();
 
    pop();
    //printStack();
 
    getchar();    // 대기 상태 문자하나 줄때까지 대기한다. enter치면끝
 
    return 0;
}
cs
728x90