fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define MAX_STACK_SIZE 100
  5.  
  6. typedef char element; // 교체!
  7. // 차후에 스택이 필요하면 여기만 복사하여 붙인다.
  8. // ===== 스택 코드의 시작 =====
  9. #define MAX_STACK_SIZE 100
  10.  
  11.  
  12. typedef struct {
  13. element data[MAX_STACK_SIZE];
  14. int top;
  15. } StackType;
  16.  
  17. // 스택 초기화 함수
  18. void init_stack(StackType *s)
  19. {
  20. s->top = -1;
  21. }
  22.  
  23. // 공백 상태 검출 함수
  24. int is_empty(StackType *s)
  25. {
  26. return (s->top == -1);
  27. }
  28. // 포화 상태 검출 함수
  29. int is_full(StackType *s)
  30. {
  31. return (s->top == (MAX_STACK_SIZE - 1));
  32. }
  33. // 삽입함수
  34. void push(StackType *s, element item)
  35. {
  36. if (is_full(s)) {
  37. fprintf(stderr, "스택 포화 에러\n");
  38. return;
  39. }
  40. else s->data[++(s->top)] = item;
  41. }
  42. // 삭제함수
  43. element pop(StackType *s)
  44. {
  45. if (is_empty(s)) {
  46. fprintf(stderr, "스택 공백 에러\n");
  47. exit(1);
  48. }
  49. else return s->data[(s->top)--];
  50. }
  51. // 피크함수
  52. element peek(StackType *s)
  53. {
  54. if (is_empty(s)) {
  55. fprintf(stderr, "스택 공백 에러\n");
  56. exit(1);
  57. }
  58. else return s->data[s->top];
  59. }
  60. // ===== 스택 코드의 끝 =====
  61. void que(StackType *s1, StackType *s2)
  62. {
  63. int i,n;
  64. n = s1->top;
  65. for (i = n; i > -1; i--)
  66. {
  67. push(s2, pop(s1));
  68. }
  69. }
  70.  
  71. int Out(StackType *s1,StackType *s2)
  72. {
  73. int num;
  74. if (is_empty(s2))
  75. {
  76. que(s1, s2);
  77. num = pop(s2);
  78. return num;
  79. }
  80. else
  81. {
  82. num = pop(s2);
  83. return num;
  84. }
  85. }
  86.  
  87. int main(void)
  88. {
  89. StackType s1, s2;
  90.  
  91. init_stack(&s1);
  92. init_stack(&s2);
  93.  
  94.  
  95. push(&s1, 10);
  96. push(&s1, 20);
  97. push(&s1, 3);
  98.  
  99. printf("%d", Out(&s1,&s2));
  100. printf("%d", Out(&s1,&s2));
  101. printf("%d", Out(&s1,&s2));
  102.  
  103. //getchar();
  104. }
Success #stdin #stdout 0s 9424KB
stdin
Standard input is empty
stdout
10203