CafeM0ca

[C]스택 구현 본문

Programming/자료구조|알고리즘

[C]스택 구현

M0ca 2017. 11. 16. 03:25
반응형

구현하는데 있어서 별 어려움은 없다. 모카는 C++하던 습관 때문에 구조체 메소드로 만들려 했는데 C표준에서 거부하는거 같다. 유감..


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
#include<stdio.h>
 
typedef struct stack {
    int snum;
    int arr[10000];
}Stack;
 
int Empty(Stack * s) {
    if (s->snum == 0//비어 있으면 0
        return 0;
    else
        return 1;   //차 있으면 1
}
 
int Top(Stack * s) {
    if (s->snum == 0)  //최상단이 없으면 -1
        return -1;
    else
        return s->arr[s->snum-1]; //있으면 최상위값 반환
}
int Full(Stack * s) {
    if (s->snum == 10000//꽉차면 -1
        return 1;
    else 
        return -1;  //널널하면 1
}
 
int Push(Stack * s) {
    int v;
    scanf("%d"&v);
    if (s->snum >= 10000)  //꽉차면 -1
        return -1;
    else 
        return s->arr[s->snum++= v;  // s->snum에 v저장후 s->snum += 1
}
int Pop(Stack * s) {
    if (s->snum == 0)   //비어있으면 -1
        return -1;
    else 
        return s->arr[s->snum-=1];  //s->snum -=1 후 s->snum에 접근 
}
 
int main(void) {
    Stack s = { 0,0 };
    printf("pushed: %d\n",Push(&s));
    printf("poped: %d\n", Pop(&s));
    printf("pushed: %d\n", Push(&s));
    printf("pushed: %d\n", Push(&s));
    printf("pushed: %d\n", Push(&s));
    printf("Top: %d\n", Top(&s));
    printf("poped: %d\n", Pop(&s));
    printf("Full: %d\n", Full(&s));
    printf("Empty: %d\n", Empty(&s));
    printf("poped: %d\n", Pop(&s));
 
    return 0;
}
cs


반응형
Comments