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. while(1){
  14. printf("1:push 2:pop 0:end ");
  15. scanf("%d",&resp);
  16.  
  17. if(!resp) break;
  18.  
  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 ",i,stack[i]);
  31. }
  32. return 0;
  33. }
  34.  
  35.  
  36. void push(int value){
  37. if(sp>=SIZE){
  38. printf("スタックが満杯で入りませんでした\n");
  39. return 0;
  40. }else{
  41. stack[sp]=value;
  42. sp++;
  43. }
  44. }
  45.  
  46. int pop(void){
  47. if(sp<=0){
  48. printf("スタックが空で取り出せませんでした\n");
  49. return 0;
  50. }else{
  51. return stack[--sp];
  52. }
  53. }
Success #stdin #stdout 0.01s 5268KB
stdin
1 10 1 20 1 30  1 40 1 50 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 sp=4
1:push 2:pop 0:end sp=5
1:push 2:pop 0:end 
stack[0]=10 stack[1]=20 stack[2]=30 stack[3]=40 stack[4]=50