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) break;
  18.  
  19. switch(resp){
  20. case 1:
  21. printf("push:");
  22. scanf("%d",&data);
  23. push(data);
  24. break;
  25. case 2:
  26. pop();
  27. break;
  28. }
  29. printf("sp=%d\n",sp);
  30. }
  31. printf("\n");
  32. for(int i=0;i<sp;i++){
  33. printf("stack[%d]=%d\n",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. }
Success #stdin #stdout 0s 5320KB
stdin
1
23
1
65
1
45
2
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
sp=2
1:push 2:pop 0:end

stack[0]=23
stack[1]=65