Note
Una coda (Queue) è una struttura dati con le seguenti operazioni:
Enqueue(Q,e): aggiungeealla fine della codaDequeue(Q): restituisce l’elemento all’inizio della coda, cancellandolo dalla stessaEmpty(Q): restituiscetruese la coda è vuotaCome nel caso della pila, è possibile realizzare una coda sia con una lista che con un vettore.
Implementazione con una lista
Se lo stoccaggio dei dati è effettuato negli elementi di una lista, teniamo traccia dell’ultimo elemento della lista (oltre al primo) con un puntatore
tail. Le operazioni diventano:
Enqueue(Q,e): inserisci l’elementoein coda alla lista, aggiornandotailDequeue(Q): restituisci l’elemento in testa se diverso daNIL, cancellandolo e aggiornandoheadEmpty(Q): Restituiscihead = tail
Implementazione con un vettore
Se lo stoccaggio dei dati è effettuato nelle celle di un vettore
lungo , teniamo traccia della posizione dove va inserito un nuovo elemento e di quella dell’elemento più vecchio con due indici taileheade del numero di elementi contenutin. Gli indici vengono incrementati di:
Enqueue(Q,e): se, inserisci l’elemento in A[tail], incrementae tailDequeue(Q): se, restituisci A[head]corrente, decrementan, incrementaheadEmpty(Q): restituiscin = 0Per ampliare lo stoccaggio è necessaria un allocazione fresca e copia degli elementi estraendoli con
Dequeue(Q)