Un mazzo (coda a due fini, Dequeue) è una struttura dati che si comporta come un mazzo di carte, di cui ogni una contiene un elemento. È possibile aggiungere sia in testa che in coda alla struttura:
PushFront(Q,e)
: inserisce l'elemento e
in testa al mazzoPushBack(Q,e
): inserisce l'elemento e
in coda al mazzoPopFront(Q)
: restituisce l'elemento in testa, cancellandoloPopBack(Q)
: restituisce l'elemento in coda, cancellandoloEmpty(Q)
: restituisce true
se il mazzo è vuotoSi ha che PushBack
e PopFront
si comportano come Enqueue
e Dequeue
di una coda realizzata con una lista, con l'aggiunta di:
PopBack(Q)
: restituisce tail.prev
se diverso da head
, rimuovendolo dalla lista PushFront(Q,e)
: aggiunge l'elemento e
in testa, aggiornando head
e il suo successore Empty(Q)
: restituisce head.next = tail
Lo stoccaggio dei dati è effettuato in modo analogo alla coda semplice.
Si ha che PushBack
e PopFront
si comportano come Enqueue
e Dequeue
di una coda realizzata con un vettore, con l'aggiunta di:
PopBack(Q)
: se A[tail]
corrente, decrementa n
, decrementa tail
PushFront(Q,e)
: head
, inserisce l'elemento e
in A[head]
e incrementa Empty(Q)
: restituisce n = 0