PYTHON
Implement Efficient Queues and Stacks with Deque
Utilize Python's collections.deque for high-performance queues (FIFO) and stacks (LIFO), crucial for managing tasks or processing data streams.
from collections import deque
# --- As a Queue (FIFO: First-In, First-Out) ---
my_queue = deque()
# Add elements to the right (enqueue)
my_queue.append('Task A')
my_queue.append('Task B')
my_queue.append('Task C')
# print(f"Queue after appending: {my_queue}") # deque(['Task A', 'Task B', 'Task C'])
# Remove elements from the left (dequeue)
next_task = my_queue.popleft()
# print(f"Processed task: {next_task}") # Task A
# print(f"Queue after popleft: {my_queue}") # deque(['Task B', 'Task C'])
# --- As a Stack (LIFO: Last-In, First-Out) ---
my_stack = deque()
# Add elements to the right (push)
my_stack.append('Page 1')
my_stack.append('Page 2')
my_stack.append('Page 3')
# print(f"Stack after appending: {my_stack}") # deque(['Page 1', 'Page 2', 'Page 3'])
# Remove elements from the right (pop)
current_page = my_stack.pop()
# print(f"Current page: {current_page}") # Page 3
# print(f"Stack after pop: {my_stack}") # deque(['Page 1', 'Page 2'])
How it works: collections.deque (double-ended queue) is a list-like container with fast appends and pops from either end. This makes it ideal for implementing efficient queues (FIFO - First-In, First-Out) using append() and popleft(), and stacks (LIFO - Last-In, First-Out) using append() and pop(). Unlike lists, deque offers O(1) performance for these operations.