Advertisement
u53r

Gestione di una pila

Nov 7th, 2019
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.49 KB | None | 0 0
  1. /*
  2.   Gestione di una pila (LIFO)
  3. */
  4. #include <stdio.h>
  5.  
  6. int main() {
  7.   int v[10],i,ex=0,ins,sc,n; // v => vettore da gestire, i => contatore per il for, ex => indice per il push, ins => indice per il pop, sc => variabile per lo switch, n => numero da inserire
  8.   for (i = 0; i < 10; i++) {
  9.     v[i] = 0;
  10.   }
  11.   while (1) {
  12.     printf("1) Push\n");
  13.     printf("2) Pop\n");
  14.     printf("3) Stampa\n");
  15.     printf("DEFAULT) Esci\n");
  16.     scanf("%d", &sc);
  17.     switch (sc) {
  18.       case 1:
  19.       if(ex > 9){ // Controllo che la pila non sia piena
  20.         printf("Pila piena, push non consentito\n");
  21.       }else{
  22.         printf("Inserisci il numero (!= 0) > ");
  23.         scanf("%d", &n);
  24.         if(n == 0){ // Uso lo zero come valore di riferimento per gli spazi liberi (piΓΉ una questione di chiarezza che altro, se ne potrebbe fare a meno)
  25.           printf("Inserimento non consentito\n");
  26.         }else{
  27.           v[ex] = n;
  28.           ex++;
  29.         }
  30.       }
  31.       break;
  32.       case 2:
  33.       ins = ex-1;
  34.       if(ins < 0){
  35.         printf("Pila vuota, pop non consentito\n");
  36.       }else{
  37.         printf("%d \n", v[ins]);
  38.         v[ins] = 0;
  39.         ex--; // la posizione utile per il push diventa uguale alla posizione da cui abbiamo effettuato il pop
  40.       }
  41.       break;
  42.       case 3:
  43.       // Stampo tutto il vettore
  44.       for (i = 0; i < 10; i++) {
  45.         printf("%d > %d\n",i,v[i]);
  46.       }
  47.       break;
  48.       default:
  49.       return 0;
  50.       break;
  51.     }
  52.   }
  53.   return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement