Concept Flow - Double Ended Queue Deque
Start
Check Operation Type
Add Front
Update Front
Check Remove?
Remove Front
Update Pointers
Done
The deque allows adding or removing elements from both front and rear ends by updating pointers accordingly.
from collections import deque d = deque() d.append(10) # add rear d.appendleft(5) # add front d.pop() # remove rear d.popleft() # remove front
| Step | Operation | Nodes in Deque | Pointer Changes | Visual State |
|---|---|---|---|---|
| 1 | Initialize empty deque | [] | head=None, tail=None | null |
| 2 | Add 10 at rear | [10] | head=10, tail=10 | 10 -> null |
| 3 | Add 5 at front | [5, 10] | head=5, tail=10 | 5 -> 10 -> null |
| 4 | Remove rear | [5] | head=5, tail=5 | 5 -> null |
| 5 | Remove front | [] | head=None, tail=None | null |
| 6 | Attempt remove front on empty | [] | Raises IndexError | null |
| Variable | Start | After Step 2 | After Step 3 | After Step 4 | After Step 5 | After Step 6 |
|---|---|---|---|---|---|---|
| deque | [] | [10] | [5, 10] | [5] | [] | [] |
| head | None | 10 | 5 | 5 | None | None |
| tail | None | 10 | 10 | 5 | None | None |
Double Ended Queue (Deque): - Supports adding/removing from front and rear. - Head points to front, tail points to rear. - Adding front updates head; adding rear updates tail. - Removing last element sets head and tail to None. - Empty deque has no nodes and pointers are None.