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