In questa lezione studieremo la gestione di una coda in C.
Una coda (o queue) è una struttura dati astratta che, al contrario della pila, utilizza una politica di tipo FIFO. Ovvero il primo elemento ad entrare è anche il primo ad uscire.
Nella coda quindi l'inserimento avviene ad una estremità (coda), mentre la cancellazione e il prelievo dei dati avvengono all'altra estremità, cioè dalla testa.
Gestione di una coda in C mediante un array
Anche la gestione della coda può essere realizzata appoggiandosi ad un array.
Utilizzeremo inoltre una variabile fine per indicare l'ultima posizione occupata.
Fondamenti solidi di programmazione
Impara le basi della programmazione in C in modo semplice, pratico ed efficace. Variabili, cicli, funzioni, logica e algoritmi.
⏱️9 ore di corso registrato
🧩Più di 50 algoritmi risolti passo passo
🎯Livello base
💻100% online, fruibile quando vuoi
Dunque per inizializzare o svuotare la coda assegniamo all'indice fine il valore -1.
Quando facciamo l'operazione Pop dobbiamo spostare di una posizione a sinistra gli altri elementi.
La funzione Push aggiunge un nuovo elemento in coda e aggiorna l'indice fine.
Ecco dunque il semplice algoritmo che realizza le operazioni di inserimento ed estrazione di un elemento in un coda in c. Inoltre implementeremo le operazioni di stampa e svuotamento della coda.
Anche in questo esercizio, proposto principalmente a scopo didattico, facciamo uso delle variabili globali.
Ecco dunque il listato completo sulla gestione di una coda in C:
#include <stdio.h>
#define MAX 3
int fine;
int Coda[MAX];
int menu_scelta(void)
{
int selezione = 0;
do
{
printf("\n" );
printf("\n1 -> Aggiungi un dato" );
printf("\n2 -> Estrai un dato");
printf("\n3 -> Svuota pila");
printf("\n4 -> Stampa pila");
printf("\n5 -> Esci");
printf("\n" );
printf("\nEffettua una scelta: " );
scanf("%d", &selezione );
}
while (selezione<1 || selezione>5);
return selezione;
}
void Push() {
int n;
if(fine==MAX)
printf("\n -> Coda piena" );
else {
printf("\nInserisci un dato: " );
scanf("%d", &n);
Coda[fine++]=n;
}
}
void Pop() {
int i;
if(fine==-1)
printf("\n - Coda vuota" );
else {
printf("%d", Coda[0]);
for(i=1;i<=fine;i++)
Coda[i-1]=Coda[i];
fine--;
}
}
void Clear() {
fine=-1;
printf("\n -> Coda svuotata" );
}
void Print() {
int i;
if(fine==-1)
printf("\n -> Coda vuota" );
else
for(i=0;i<fine;i++)
printf("indice i: %d elemento %d\n", i, Coda[i]);
}
int main(){
int scelta;
while((scelta=menu_scelta())!=5){
switch(scelta){
case 1:
Push();
break;
case 2:
Pop();
break;
case 3:
Clear();
break;
case 4:
Print();
break;
case 5:
break;
}
}
return 0;
}
Chiaramente questo è solo un esempio di gestione di una coda in C, prossimamente proporrò altri esercizi.
Un'email ogni tanto con i nuovi articoli e le guide — niente spam, ti disiscrivi quando vuoi.
🍪 Questo sito usa i cookie
Utilizziamo cookie tecnici necessari al funzionamento e, previo tuo consenso, cookie
analitici e di terze parti per migliorare l'esperienza di navigazione.
Leggi la Cookie Policy e la
Privacy Policy.