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.  
  10. int main(void)
  11. {
  12. sp = 0;
  13. int resp, data;
  14.  
  15. while (1) {
  16. printf("1:push 2:pop 0:end : ");
  17. scanf("%d", &resp);
  18.  
  19. if (!resp) break;
  20.  
  21. switch (resp) {
  22. case 1:
  23. printf("push : ");
  24. scanf("%d", &data);
  25. push(data);
  26. break;
  27.  
  28. case 2:
  29. printf("pop : ");
  30. pop();
  31. break;
  32. }
  33. printf("sp=%d\n", sp);
  34. }
  35.  
  36. printf("\n");
  37. for (int i = 0; i < sp; i++) {
  38. printf("stack[%d]=%d \n", i, stack[i]);
  39. }
  40.  
  41. return 0;
  42. }
  43. void push(int value)
  44. {
  45. if (sp >= SIZE) {
  46. printf("スタックが満杯で入りませんでした\n");
  47. } else {
  48. stack[sp++] = value;
  49. }
  50. }
  51.  
  52. int pop(void)
  53. {
  54. if (sp <= 0) {
  55. printf("スタックが空で取り出せませんでした\n");
  56. return 0;
  57. } else {
  58. return stack[--sp];
  59. }
  60. }
  61.  
Success #stdin #stdout 0s 5320KB
stdin
2
1
10
1
20
1
30
1
40
1
50
1
60
2
0
stdout
1:push 2:pop 0:end : pop : スタックが空で取り出せませんでした
sp=0
1:push 2:pop 0:end : push : sp=1
1:push 2:pop 0:end : push : sp=2
1:push 2:pop 0:end : push : sp=3
1:push 2:pop 0:end : push : sp=4
1:push 2:pop 0:end : push : sp=5
1:push 2:pop 0:end : push : スタックが満杯で入りませんでした
sp=5
1:push 2:pop 0:end : pop : sp=4
1:push 2:pop 0:end : 
stack[0]=10 
stack[1]=20 
stack[2]=30 
stack[3]=40