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 : \n");
  15. scanf("%d",&resp);
  16.  
  17. if(!resp){
  18. break;
  19. }
  20. switch(resp){
  21. case 1:
  22. scanf("%d",&data);
  23. push(data);
  24. break;
  25. case 2:
  26. printf("pop : %d\n",pop());
  27. break;
  28. }
  29. printf("sp=%d",sp);
  30. }
  31. printf("\n");
  32. for(int i = 0;i < sp;i ++){
  33. printf("stack[%d]=%d",i,stack[i]);
  34. }
  35. return 0;
  36. }
  37.  
  38. void push(int value){
  39. if(sp >= SIZE){
  40. printf("スタックが満杯で入りませんでした。\n");
  41. }else{
  42. stack[sp++] = value;
  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. }
  54.  
Success #stdin #stdout 0s 5328KB
stdin
1
4
1
6
1
7
2
2
0
stdout
1 : push 2 : pop 0 : end : 
sp=11 : push 2 : pop 0 : end : 
sp=21 : push 2 : pop 0 : end : 
sp=31 : push 2 : pop 0 : end : 
pop : 7
sp=21 : push 2 : pop 0 : end : 
pop : 6
sp=11 : push 2 : pop 0 : end : 

stack[0]=4