Obojsmerná fronta (double-ended queue, čiže deque) je kombináciou zásobníka a fronty. Môžeme doň vkladať aj odoberať z oboch strán, a tiež sa pozerať na začiatok aj koniec. Ako abstraktná dátová štruktúra podporuje nasledovné operácie:
Pamäťová zložitosť celej štruktúry je $O(n)$. Časové zložitosti jednotlivých operácií sú rovnaké -- $O(1)$.
Metóda appendleft()
pridá prvok na začiatok deque.
from collections import deque
deq = deque()
deq.appendleft(1)
deq.appendleft(2)
# deq aktuálne obsahuje [2, 1]
Metóda append()
pridá prvok na koniec deque.
deq.append(3)
# deq obsahuje [2, 1, 3]
Metóda popleft()
vráti a odstráni prvok zo začiatku deque.
deq.popleft() # dostaneme 2
Metóda pop()
odstráni prvok z konca deque.
deq.pop() # dostaneme 3
Prístup k prvku na začiatku deque môžeme spraviť cez index 0
.
deq[0]
Prístup k poslednému prvku deque môžeme spraviť cez index -1
.
deq[-1]
Pred prístupom k indexu 0
alebo -1
je však dobré vždy skontrolovať, či deque
nie je prázdna. Ak by bola prázdna, viedlo by to k chybe IndexError
.