0% found this document useful (0 votes)
18 views

Ex 6

The document describes an algorithm to implement a circular queue data structure along with its operations like enqueue, dequeue, peek and display. It provides the code to create a CircularQueue class with these methods and provides an example usage.

Uploaded by

anonymous
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views

Ex 6

The document describes an algorithm to implement a circular queue data structure along with its operations like enqueue, dequeue, peek and display. It provides the code to create a CircularQueue class with these methods and provides an example usage.

Uploaded by

anonymous
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

Ex 6: Circular Queue

To organize a traffic light management system based on number of vehicles on each


side, Implement a circular queue data structure algorithm along with its respective
operations.
ALGORITHM:
Input: max_size - maximum size of the circular queue
1. Initialize a circular queue with max_size elements, front, and rear indices set to -1.
2. Function is_empty:
- Return true if front is -1, indicating an empty queue; otherwise, return false.
3. Function is_full:
- Return true if (rear + 1) % max_size is equal to front, indicating a full queue; otherwise,
return false.

4. Function enqueue(item):
a. If is_full() is true, print "Queue is full. Cannot enqueue."
b. If is_empty() is true, set front and rear to 0.
c. Increment rear by 1 (rear = (rear + 1) % max_size).
d. Set queue[rear] to the given item.
e. Print "Item enqueued to the queue."

5. Function dequeue():
a. If is_empty() is true, print "Queue is empty. Cannot dequeue."
b. Store the item at queue[front] in a variable (removed_item).
c. If front is equal to rear, set front and rear to -1.
Otherwise, increment front by 1 (front = (front + 1) % max_size).
d. Print "Item dequeued from the queue."
e. Return removed_item.

6. Function peek():
- If is_empty() is true, print "Queue is empty."
- Otherwise, print "Front element: " followed by queue[front].
7. Function display():
- If is_empty() is true, print "Queue is empty."
- Otherwise, initialize an index i with front.
a. Loop while true:
- Print queue[i].
- If i is equal to rear, break from the loop.
- Otherwise, increment i by 1 (i = (i + 1) % max_size).
b. Print a newline.

8. Example usage:
- Create a CircularQueue instance with the desired max_size.
- Perform enqueue, dequeue, peek, and display operations as needed.

PROGRAM:
class CircularQueue:
def __init__(self, max_size):
self.max_size = max_size
self.queue = [None] * max_size
self.front = self.rear = -1

def is_empty(self):
return self.front == -1

def is_full(self):
return (self.rear + 1) % self.max_size == self.front

def enqueue(self, item):


if self.is_full():
print("Queue is full. Cannot enqueue.")
else:
if self.is_empty():
self.front = self.rear = 0
else:
self.rear = (self.rear + 1) % self.max_size
self.queue[self.rear] = item
print(f"{item} enqueued to the queue.")

def dequeue(self):
if self.is_empty():
print("Queue is empty. Cannot dequeue.")
else:
removed_item = self.queue[self.front]
if self.front == self.rear:
self.front = self.rear = -1
else:
self.front = (self.front + 1) % self.max_size
print(f"{removed_item} dequeued from the queue.")
return removed_item

def peek(self):
if self.is_empty():
print("Queue is empty.")
else:
print(f"Front element: {self.queue[self.front]}")

def display(self):
if self.is_empty():
print("Queue is empty.")
else:
i = self.front
while True:
print(self.queue[i], end=" ")
if i == self.rear:
break
i = (i + 1) % self.max_size
print()

# Example usage:
max_size = 5
traffic_queue = CircularQueue(max_size)

traffic_queue.enqueue("North: 5 vehicles")
traffic_queue.enqueue("East: 3 vehicles")
traffic_queue.enqueue("South: 2 vehicles")
traffic_queue.enqueue("West: 4 vehicles")

traffic_queue.display()

traffic_queue.dequeue()
traffic_queue.dequeue()

traffic_queue.display()

traffic_queue.enqueue("North: 1 vehicle")
traffic_queue.enqueue("South: 7 vehicles")

traffic_queue.display()
OUTPUT:
North: 5 vehicles enqueued to the queue.
East: 3 vehicles enqueued to the queue.
South: 2 vehicles enqueued to the queue.
West: 4 vehicles enqueued to the queue.
North: 5 vehicles East: 3 vehicles South: 2 vehicles West: 4 vehicles

North: 5 vehicles dequeued from the queue.


East: 3 vehicles dequeued from the queue.
South: 2 vehicles West: 4 vehicles

North: 1 vehicle enqueued to the queue.


South: 7 vehicles enqueued to the queue.
South: 2 vehicles West: 4 vehicles North: 1 vehicle South: 7 vehicles

You might also like