fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define DIM 4
  5.  
  6. struct stackT
  7. {
  8. int stack_array[DIM];
  9. int head;
  10. };
  11.  
  12. void init(struct stackT *pila);
  13. int push(struct stackT *pila, int elem);
  14. int pop(struct stackT *pila, int *elem);
  15. int sizee(struct stackT *pila);
  16. int is_emptyy(struct stackT *pila);
  17.  
  18. int main()
  19. {
  20. struct stackT p;
  21. char f, s;
  22. int a;
  23. int b;
  24. init(&p);
  25. printf("continui [s\\n]");
  26. scanf(" %c", &s);
  27. do
  28. {
  29. printf("inserisci a\n");
  30. scanf("%d", &a);
  31. if (push(&p, a) == 1)
  32. {
  33. printf("la pila è piena\n");
  34. s = 'n';
  35. }
  36. else
  37. {
  38. printf("size %d\n", sizee(&p));
  39. }
  40. }
  41. while (s == 's');
  42.  
  43. // printf("1=vuoto\n, 0=piento\n %d\n", is_emptyy(&p));
  44.  
  45. printf("cancellare? [s\\n]");
  46. scanf(" %c", &f);
  47. printf("\n");
  48.  
  49. do
  50. {
  51. if (pop(&p, &b) == 1)
  52. {
  53. printf("la pila è vuota");
  54. f = 'n';
  55. }
  56. // printf("%d", b);
  57. printf("p.head: %d\n", p.head );
  58. }
  59. while (f == 's');
  60.  
  61. // printf("1=vuoto, 0=piento\n %d\n", is_emptyy(&p));
  62.  
  63. return 0;
  64. }
  65.  
  66. void init(struct stackT *pila)
  67. {
  68. pila->head = 0;
  69. return;
  70. }
  71.  
  72. int push(struct stackT *pila, int elem)
  73. {
  74. if (pila->head == DIM)
  75. return 1;
  76. pila->stack_array[pila->head] = elem;
  77. pila->head++;
  78. return 0;
  79. }
  80.  
  81. int pop(struct stackT *pila, int *elem)
  82. {
  83. if (pila->head == 0)
  84. return 1;
  85. *elem = pila->stack_array[pila->head];
  86. pila->head--;
  87. return 0;
  88. }
  89.  
  90. int sizee(struct stackT *pila)
  91. {
  92. return pila->head;
  93. }
  94.  
  95. int is_emptyy(struct stackT *pila)
  96. {
  97. if (pila->head == 0)
  98. return 1;
  99. return 0;
  100. }
Success #stdin #stdout 0s 10320KB
stdin
s
1
2
3
4
5
s
stdout
continui [s\n]inserisci a
size 1
inserisci a
size 2
inserisci a
size 3
inserisci a
size 4
inserisci a
la pila è piena
cancellare? [s\n]
p.head: 3
p.head: 2
p.head: 1
p.head: 0
la pila è vuotap.head: 0