Le operazioni minime per una coda doppia (double ended queue).
Si può scegliere se aggiungere/togliere in prima/ultima posizione.
La struttura dati lista (list) di Python si presta come contenitore dei dati e può essere facilmente manipolata per realizzare le operazioni richieste.
Operazione | Implementazione | ||
---|---|---|---|
coda_doppia=[] | Una coda doppia vuota | ||
z.append_right(x) | Aggiunge x a destra, al primo posto della coda | coda_doppia.append(x) | Aggiunge a destra… |
z.append_left(x) | Aggiunge x a sinistra, all’ultimo posto della coda | coda_doppia.insert(0, x) | Aggiunge a sinistra… |
x <– z.remove_right() | Restituisce l’elemento a destra, al primo posto, e lo elimina | x=coda_doppia.pop() | Toglie da destra… |
x <– z.remove_left() | Restituisce l’elemento a sinistra, all’ultimo posto, e lo elimina | x=coda_doppia.pop(0) | Toglie da sinistra… |
z.is_empty() | La coda è vuota? |
Test 1
coda_doppia=[] # [] coda_doppia.insert(0, 18) # [18] coda_doppia.insert(0, 1) # [1, 18] coda_doppia.append(28) # [1, 18, 28] print(len(coda_doppia) == 0) # False print(coda_doppia.pop()) # [1, 18] 28 print(len(coda_doppia) == 0) # False print(coda_doppia.pop(0)) # [18] 1 print(len(coda_doppia) == 0) # False print(coda_doppia.pop()) # [] 18 print(len(coda_doppia) == 0) # True
Test 2
Usa la coda doppia come uno stack
coda_doppia=[] # [] for x in range(5): coda_doppia.append(x) print(coda_doppia) # [0, 1, 2, 3, 4] while(len(coda_doppia) != 0): print(coda_doppia.pop()) # 4 3 2 1 0 print(coda_doppia) # []
Test 3
Usa la coda doppia come una coda
coda_doppia=[] # [] for x in range(5): coda_doppia.insert(0, x) print(coda_doppia) # [4, 3, 2, 1, 0] while(len(coda_doppia) != 0): print(coda_doppia.pop()) # 0 1 2 3 4 print(coda_doppia) # []