from collections import deque
# Create a queue
q = deque()
# Enqueue functions
def enqueue_right(queue, item):
queue.append(item)
print(f"Enqueued to right: {item}")
def enqueue_left(queue, item):
queue.appendleft(item)
print(f"Enqueued to left: {item}")
# Enqueue elements to the right
enqueue_right(q, "A")
enqueue_right(q, "B")
enqueue_right(q, "C")
print("Queue contents:", q)
# Enqueue elements to the left
enqueue_left(q, "X")
enqueue_left(q, "Y")
print("Queue contents:", q)
# Dequeue elements from the left
print("Dequeued from left:", q.popleft())
print("Dequeued from left:", q.popleft())
print("Queue contents:", q)
# Dequeue element from the right
print("Dequeued from right:", q.pop())
print("Queue contents:", q)
# Check if the queue is empty
print("Is the queue empty?", len(q) == 0)
# Dequeue remaining elements
print("Dequeued from left:", q.popleft())
print("Dequeued from left:", q.popleft())
print("Is the queue empty?", len(q) == 0)
'''
run:
Enqueued to right: A
Enqueued to right: B
Enqueued to right: C
Queue contents: deque(['A', 'B', 'C'])
Enqueued to left: X
Enqueued to left: Y
Queue contents: deque(['Y', 'X', 'A', 'B', 'C'])
Dequeued from left: Y
Dequeued from left: X
Queue contents: deque(['A', 'B', 'C'])
Dequeued from right: C
Queue contents: deque(['A', 'B'])
Is the queue empty? False
Dequeued from left: A
Dequeued from left: B
Is the queue empty? True
'''