도순씨의 코딩일지

C언어로 쉽게 풀어쓴 자료구조 개정3판 4장 10번 본문

𝐏𝐑𝐎𝐆𝐑𝐀𝐌𝐌𝐈𝐍𝐆/𝐂

C언어로 쉽게 풀어쓴 자료구조 개정3판 4장 10번

도순씨 2020. 10. 14. 00:00

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
// Stack code
 
#include <stdio.h>
#include <stdlib.h>
 
#define MAX_STACK_SIZE 6
 
 
typedef int element;
typedef struct{
    int top;
    element data[MAX_STACK_SIZE];
} StackType;
 
 
void init_stack(StackType *s){
    s -> top = -1;
}
 
int is_empty(StackType *s){
    return (s -> top == -1);
}
 
int is_full(StackType *s){
    return (s -> top == (MAX_STACK_SIZE-1));
}
 
void push(StackType *s, element item){
    if(is_full(s)){
        fprintf(stderr, "스택 포화 에러\n");
        exit(1);
    }
    else
        s -> data [++(s -> top)] = item;
}
 
element pop(StackType *s){
    if(is_empty(s)){
        fprintf(stderr, "스택 공백 에러\n");
        exit(1);
    }
    else
        return s -> data[(s->top)--];
}
 
element peek(StackType *s){
    if(is_empty(s)){
        fprintf(stderr, "스택 공백 에러\n");
        exit(1);
    }
    else
        return s -> data[s->top];
}
 
// 여기부터 문제를 위한 코드
 
int main(void){
    int i;
    int temp;
    StackType s;
    printf("정수 배열의 크기: %d\n", MAX_STACK_SIZE);
    init_stack(&s);
    printf("정수를 입력하시오: ");
    for(i=0; i<MAX_STACK_SIZE; i++){
        scanf("%d"&temp);
        push(&s, temp);
    }
    printf("반전된 정수 배열: ");
    for(i=0; i<MAX_STACK_SIZE; i++){
        printf("%d "pop(&s));
    }
    return 0;
}
 
cs

Comments