Edizione didattica italiana
Coda in C: struttura FIFO
Mantieni l’ordine di arrivo e distingui una coda piena da una vuota.

Una coda restituisce gli elementi nell’ordine d’arrivo. enqueue aggiunge in fondo e dequeue rimuove dall’inizio. Distingui chiaramente gli stati vuoto e pieno da un indice valido.
Una coda circolare riutilizza le posizioni liberate riportando gli indici all’inizio. Un contatore o una posizione riservata distingue pieno e vuoto. Una coda lineare può raggiungere la fine pur avendo spazi liberi all’inizio.
Controlla capacità e stato prima di ogni operazione. Prova un caso che oltrepassi la fine del buffer e verifica che l’ordine di arrivo sia conservato.
Codice sorgente
#include <stdio.h>
#define SIZE 5
typedef struct {
int items[SIZE];
int front;
int rear;
} Queue;
void initQueue(Queue *q) {
q->front = -1;
q->rear = -1;
}
int isFull(Queue *q) { return q->rear == SIZE - 1; }
int isEmpty(Queue *q) { return q->front == -1 || q->front > q->rear; }
void enqueue(Queue *q, int val) {
if (isFull(q)) {
printf("Queue Full!\n");
return;
}
if (q->front == -1) q->front = 0;
q->items[++(q->rear)] = val;
}
int dequeue(Queue *q) {
if (isEmpty(q)) {
printf("Queue Empty!\n");
return -1;
}
return q->items[(q->front)++];
}
int main() {
Queue q;
initQueue(&q);
enqueue(&q, 100);
enqueue(&q, 200);
enqueue(&q, 300);
printf("Dequeued: %d\n", dequeue(&q));
printf("Dequeued: %d\n", dequeue(&q));
return 0;
}Apri nel compilatoreRisultato atteso
Dequeued: 100 Dequeued: 200
Domande frequenti
Perché il codice e alcuni risultati restano in inglese?
Parole chiave C, identificatori, commenti del programma e output attesi restano quelli originali per preservare codice eseguibile e test coerenti. Spiegazioni e istruzioni sono tradotte.