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
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define N 10
typedef char element;
typedef struct {
element data[N];
int top;
} StackType;
void init(StackType* a) {
a->top = -1;
}
int isEmpty(StackType* a) {
return a->top == -1;
}
int isFull(StackType* a) {
return a->top == N - 1;
}
void push(StackType* a, element e) {
if (isFull(a)) {
printf("Overflow\n");
} else {
a->top += 1;
a->data[a->top] = e;
}
}
element pop(StackType* a) {
if (isEmpty(a)) {
printf("Empty\n");
return -1;
}
element e = a->data[a->top];
a->top--;
return e;
}
element peek(StackType* a) {
if (isEmpty(a)) {
printf("Empty\n");
return -1;
}
return a->data[a->top];
}
void print(StackType* a) {
for (int i = 0; i <= a->top; i++) {
printf("%c", a->data[i]);
}
printf("\n");
}
int main(void) {
StackType a;
init(&a);
push(&a, 'C');
push(&a, 'a');
push(&a, 't');
push(&a, 's');
print(&a);
return 0;
}
cs

이렇게 하면된다

왜 되지 않았는가?

1. push 함수에 문자열 리터럴은 'char*' 타입인데, 'char' 타입의 데이터를 저장하는 스택에는 맞지 않음. 문자 리터럴을 써야함

"C"에서 'C' 로 변경하면됨

쌍따옴표말고 따옴표를 써

28adc477abc236a14e81d2b628f17c69979d51