Queue: Array Implementation
Explore how a queue data structure works using array implementation. Watch enqueue, dequeue, and peek operations in action with FIFO (First In, First Out) principle.
Interactive Operations
Array Implementation
O(1) Operations
Queue Visualization
Empty Queue
-
-
-
-
-
-
-
-
Size: 0 / 8
Status: Empty
Current Step:
Select an operation to begin visualization
Complexity Analysis
O(1)
Enqueue
O(n)
Dequeue*
O(1)
Peek
O(n) Space
Fixed array allocation
*O(n) due to shifting elements. Circular array implementation achieves O(1).
Queue Operations
Enqueue
Add element to the rear of queue
Dequeue
Remove and return front element
Peek/Front
View front element without removing
FIFO Principle
• First In: Elements added at the rear
• First Out: Elements removed from the front
• Order Preservation: Maintains insertion order
• Fair Processing: No element jumps the queue
Applications
• Task Scheduling: OS process scheduling
• BFS Algorithms: Graph traversal
• Print Queue: Document printing order
• Buffer: Data stream processing
• Breadth-First Search: Tree/graph exploration
Implementation
class QueueArray:
def __init__(self, max_size):
self.array = [None] * max_size # Fixed-size array
self.front = 0 # Index of front element
self.rear = -1 # Index of rear element
self.size = 0 # Current number of elements
self.max_size = max_size # Maximum capacity
def enqueue(self, value):
# Check for queue overflow
if self.size >= self.max_size:
raise Exception("Queue Overflow")
# Add element at rear
self.rear = (self.rear + 1) % self.max_size # Circular increment
self.array[self.rear] = value
self.size += 1
return value
def dequeue(self):
# Check for queue underflow
if self.size <= 0:
raise Exception("Queue Underflow")
# Get front element and move front pointer
value = self.array[self.front]
self.array[self.front] = None # Optional: clear the slot
self.front = (self.front + 1) % self.max_size # Circular increment
self.size -= 1
return value
def peek(self):
# Check if queue is empty
if self.size <= 0:
raise Exception("Queue is Empty")
return self.array[self.front]
def is_empty(self):
return self.size == 0
def is_full(self):
return self.size >= self.max_size
def get_size(self):
return self.size