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