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' 로 변경하면됨
쌍따옴표말고 따옴표를 써
감사합니다 상세한 설명까지 나이스
쎾쓰