fork download
  1. #include <stdio.h>
  2.  
  3. #define SIZE 5
  4. int stack[SIZE];
  5. int sp;
  6.  
  7. void push(int value);
  8. int pop(void);
  9. int isFull(void);
  10. int isEmpty(void);
  11. void display(void);
  12. void initialize(void);
  13.  
  14.  
  15. int main(void) {
  16. initialize();
  17. int resp, data;
  18.  
  19. while(1) {
  20. scanf("%d", &resp);
  21.  
  22. if(!resp) break;
  23.  
  24. switch(resp) {
  25. case 1: scanf("%d", &data);
  26. push(data);
  27. break;
  28. case 2: pop();
  29. break;
  30. case 3: initialize();
  31. break;
  32. }
  33. printf("sp=%d\n", sp);
  34. }
  35. display();
  36.  
  37. return 0;
  38. }
  39.  
  40. void push(int value)
  41. {
  42. if(isFull()) {
  43. printf("スタック満杯");
  44. } else {
  45. stack[sp++] = value;
  46. }
  47. }
  48.  
  49. int pop(void)
  50. {
  51. if(isEmpty()) {
  52. printf("スタック空");
  53. } else {
  54. return sp--;
  55. }
  56. }
  57.  
  58. int isFull(void)
  59. {
  60. if(sp>=SIZE) {
  61. return 1;
  62. } else {
  63. return 0;
  64. }
  65. }
  66.  
  67. int isEmpty(void)
  68. {
  69. if(sp <= 0) {
  70. return 1;
  71. } else {
  72. return 0;
  73. }
  74. }
  75.  
  76. void display(void)
  77. {
  78. printf("\n");
  79. for(int i=0; i<sp; i++) {
  80. printf("stack[%d]=%d\n",i,stack[i]);
  81. }
  82. }
  83.  
  84. void initialize(void)
  85. {
  86. sp = 0;
  87. }
Success #stdin #stdout 0.01s 5288KB
stdin
1
4
1
5
1
3
1
4
1
5
1
6
2
2
0
stdout
sp=1
sp=2
sp=3
sp=4
sp=5
スタック満杯sp=5
sp=4
sp=3

stack[0]=4
stack[1]=5
stack[2]=3