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. case 2:
  28. pop();
  29. break;
  30. }
  31. printf("sp=%d\n", sp);
  32. }
  33.  
  34. printf("\n");
  35. for(int i=0; i<sp; i++){
  36. printf("stack[%d]=%d\n", i, stack[i]);
  37. }
  38.  
  39. return 0;
  40. }
  41.  
  42. void push(int value)
  43. {
  44. if(sp >= SIZE){
  45. printf("スタックが満杯で入りませんでした\n");
  46. } else {
  47. stack[sp++] = value;
  48. }
  49. }
  50.  
  51. int pop(void)
  52. {
  53. if(sp <= 0){
  54. printf("スタックが空で取り出せませんでした\n");
  55. return 0;
  56. } else {
  57. return stack[--sp];
  58. }
  59. }
Success #stdin #stdout 0.01s 5324KB
stdin
1
33
1
66
1
88
2
2
2
0
stdout
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 : sp=2
1:push 2:pop 0:end : sp=1
1:push 2:pop 0:end : sp=0
1:push 2:pop 0:end :