fork download
  1. #include <stdio.h>
  2. #define SIZE 5
  3.  
  4. int stack[SIZE];
  5. int sp;
  6. void push(int value);
  7. int pop(void);
  8.  
  9. int main(void) {
  10. sp=0;
  11. int resp,data;
  12.  
  13. while(1){
  14. printf("1:push 2:pop 0:end");
  15. scanf("%d",&resp);
  16.  
  17. if(!resp){
  18. break;
  19. }
  20.  
  21. switch(resp){
  22. case 1:printf("push:");scanf("%d",&data);
  23. push(data);
  24. break;
  25. case 2:pop();
  26. break;
  27. }
  28. printf("sp=%d\n",sp);
  29. }
  30. printf("\n");
  31. for(int i=0;i<sp;i++){
  32. printf("stack[%d]=%d\n",i,stack[i]);
  33. }
  34.  
  35. return 0;
  36. }
  37.  
  38. void push(int value){
  39. if(sp>=SIZE){
  40. printf("スタックが満杯\n");
  41. }
  42. else{
  43. stack[sp++]=value;
  44. }
  45. }
  46.  
  47. int pop(void){
  48. if(sp<=0){
  49. printf("スタックが空\n");
  50. return 0;
  51. }
  52. else{
  53. return stack[--sp];
  54. }
  55. }
Success #stdin #stdout 0s 5260KB
stdin
1
10
1
20
1
30
2
2
0

stdout
1:push 2:pop 0:endpush:sp=1
1:push 2:pop 0:endpush:sp=2
1:push 2:pop 0:endpush:sp=3
1:push 2:pop 0:endsp=2
1:push 2:pop 0:endsp=1
1:push 2:pop 0:end
stack[0]=10