Advertisement
u53r

Getione di una coda con shift

Nov 7th, 2019
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.61 KB | None | 0 0
  1. /*
  2. Gestire un vettore di 10 elementi utilizzando lo shift
  3. */
  4.  
  5. #include <stdio.h>
  6.  
  7. int main() {
  8.   int v[10],i,j = 0,sc,n; // v => vettore da gestire, i => contatore per i cicli for, j => indice per il push, sc => scelta del menù, n => numero da inserire nel push
  9.   for (i = 0; i < 10; i++) { // Riempio il vettore di zeri
  10.     v[i] = 0;
  11.   }
  12.   while (1) {
  13.     printf("1) Push\n");
  14.     printf("2) Pop\n");
  15.     printf("3) Stampa\n");
  16.     printf("DEFAULT) Esci\n");
  17.     scanf("%d", &sc);
  18.     switch (sc) {
  19.       case 1:
  20.       if(j > 9){
  21.         printf("Coda piena, push non consentito\n");
  22.       }else{
  23.         printf("Inserisci il numero (!= 0) > ");
  24.         scanf("%d", &n);
  25.         if(n == 0){ // Non consento l'inserimento dello zero perché lo tratto come valore di controllo per gli spazi vuoti (non necessario ma utile ai fini dell'usabilità)
  26.           printf("Inserimento non consentito\n");
  27.         }else{
  28.           v[j] = n;
  29.           j++;
  30.         }
  31.       }
  32.       break;
  33.       case 2: // Pop
  34.       if(j == 0){ // Se l'indice è uguale a zero, allora ancora la coda è vuota
  35.         printf("Coda vuota, pop non consentito\n");
  36.       }else{
  37.         printf("%d\n", v[0]);
  38.       // Shift a sinistra di un elemento   
  39.         for(i = 0; i<9; i++){
  40.           v[i] = v[i+1];
  41.         }
  42.         v[9] = 0; // In caso di coda piena, evito di trovare valori duplicati nelle posizioni 8 e 9
  43.         j--;
  44.       }
  45.       break;
  46.       case 3: // Stampa
  47.       for (i = 0; i < 10; i++) {
  48.         printf("%d -> %d\n", i,v[i]);
  49.       }
  50.       break;
  51.       default:
  52.       return 0;
  53.       break;
  54.     }
  55.   }
  56.   return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement