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 inA[tail], incrementa etailDequeue(Q): se , restituisciA[head]corrente, decrementan, incrementaheadEmpty(Q): restituiscin = 0Per ampliare lo stoccaggio è necessaria un allocazione fresca e copia degli elementi estraendoli con
Dequeue(Q)