Abstract Data Type

Deque

Deque stands for a “double-ended queue”. It is an Abstract Data Type that generalizes a Queue, for which elements can be added to or removed from either the front or back.

→ Think the power of Stacks and Stacks and Queues combined

Implementation

The built-in deque implementation is actually a little complicated, I don’t understand it yet.

Think of it like a Circular buffer of objects

The STL use a circular buffer of Pointers.

Python collections.deque

We use the deque library to implement Stacks and Queues in Python. Check out documentation for functions.

→ Deque is preferred over list for the time complexity advantages on append and pop operations.

from collections import deque
d = collections.deque()
 
# Adding Elements
d.append(4) 
d.appendleft(6)
# Removing Elements
d.pop()
d.popleft()
 
d[-1] # last element
d[0] # first element
len(d) == 0 # isEmpty
 

C++ Deque

Dynamic array in C++ that extends upon the C++ Vector by also including push_front and pop_front. Check reference.

deque<int> d;
//Adding Elements
d.push_back(5); // [5]
d.push_back(2); // [5,2]
d.push_back(3); // [5,2,3]
d.push_front() // this also exists
//Check elements
d.front() // 5
d.back() // 3
//Removing elements
d.pop_front(); // [2,3]
d.pop_back(); // [2]