fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define STACK_SIZE 100
  4.  
  5. typedef int element;
  6. element stack[STACK_SIZE]; // 세미콜론 추가
  7. int top = -1; // 세미콜론 추가
  8.  
  9. int isEmpty() {
  10. return top == -1;
  11. }
  12.  
  13. int isFull() {
  14. return top == STACK_SIZE - 1;
  15. }
  16.  
  17. void push(element item) {
  18. if (isFull()) {
  19. printf("\nStack is Full\n");
  20. return;
  21. }
  22. stack[++top] = item;
  23. }
  24.  
  25. element pop() {
  26. if (isEmpty()) {
  27. printf("\nStack is Empty!\n");
  28. return 0;
  29. }
  30. return stack[top--];
  31. }
  32.  
  33. element peek() {
  34. if (isEmpty()) {
  35. printf("\nStack is Empty!\n");
  36. exit(1); // Exit 함수 수정
  37. }
  38. return stack[top];
  39. }
  40.  
  41. void printStack() {
  42. int i;
  43. printf("\nStack [ ");
  44. for (i = 0; i <= top; i++) {
  45. printf("%d ", stack[i]); // 요소 사이에 공백 추가
  46. }
  47. printf("]\n");
  48. }
  49.  
  50. int main(void) { // void main → int main 변경 (표준 준수)
  51. element item;
  52. printf("순차 스택 연산\n");
  53. printStack();
  54.  
  55. push(1); printStack();
  56. push(2); printStack();
  57. push(3); printStack();
  58.  
  59. item = peek();
  60. printStack();
  61. printf("peek => %d\n", item);
  62.  
  63. item = pop();
  64. printStack();
  65. printf("\tpop => %d\n", item);
  66.  
  67. item = pop();
  68. printStack();
  69. printf("\tpop => %d\n", item);
  70.  
  71. item = pop();
  72. printStack();
  73. printf("\tpop => %d\n", item);
  74.  
  75. return 0;
  76. }
  77.  
Success #stdin #stdout 0s 5280KB
stdin
Standard input is empty
stdout
순차 스택 연산

Stack [ ]

Stack [ 1 ]

Stack [ 1 2 ]

Stack [ 1 2 3 ]

Stack [ 1 2 3 ]
peek => 3

Stack [ 1 2 ]
	pop => 3

Stack [ 1 ]
	pop => 2

Stack [ ]
	pop => 1