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