La queue (o coda) è una struttura dati FIFO (First In First Out) che prevede solo due operazioni: inserimento (enqueue) alla fine della coda (tail) e l’estrazione (dequeue) del primo elemento della coda (tail). Non sono previste altre modalità di accesso, visita, inserimento o rimozione.
Si può implementare con una lista di Python, in cui il costo dell’inserimento è e quello dell’estrazione è .
class Coda:
def __init__(self):
self.elementi = []
def enqueue(self, x):
self.elementi.append(x)
def dequeue(self):
if self.elementi:
return self.elementi.pop(0)
Oppure si può implementare con le linked list
class Coda:
def __init__(self):
self.coda = None # ultimo nodo
self.testa = None # primo nodo
def enqueue(self, x): # in coda
nuovo_nodo = Nodo(x)
if self.coda:
self.coda.next = nuovo_nodo
else:
self.testa = nuovo_nodo
self.coda = nuovo_nodo
def dequeue(self):
if self.testa is None:
raise IndexError('la coda è vuota')
valore = self.testa.key
self.testa = self.testa.next
if self.testa is None:
self.coda = None
return valore