Professional Documents
Culture Documents
Introduction and Array Implementation of Circular Queue - GeeksforGeeks-5
Introduction and Array Implementation of Circular Queue - GeeksforGeeks-5
Prerequisite – Queues
A Circular Queue is a special version of queue where the last element of the queue
DSA Array Matrix Write & Earn Strings Hashing Linked List Stack Queue Binary Tree
is connected to the first element of the queue forming a circle.
The operations are per formed based on FIFO (First In First Out) principle. It is also
▲
https://www.geeksforgeeks.org/introduction-and-array-implementation-of-circular-queue/ 1/20
11/7/22, 9:35 PM Introduction and Array Implementation of Circular Queue - GeeksforGeeks
In a normal Queue, we can inser t elements until queue becomes full. But once queue
becomes full, we can not inser t the next element even if there is a space in front of
queue.
▲
https://www.geeksforgeeks.org/introduction-and-array-implementation-of-circular-queue/ 2/20
11/7/22, 9:35 PM Introduction and Array Implementation of Circular Queue - GeeksforGeeks
enQueue(value) This function is used to inser t an element into the circular queue. In
a circular queue, the new element is always inser ted at Rear position.
1. Check whether queue is Full – Check ((rear == SIZE-1 && front == 0) || (rear ==
front-1)).
2. If it is full then display Queue is full. If queue is not full then, check if (rear == SIZE
deQueue() This function is used to delete an element from the circular queue. In a
2. If it is empty then display Queue is empty. If queue is not empty then step 3
solution.
▲
https://www.geeksforgeeks.org/introduction-and-array-implementation-of-circular-queue/ 3/20
11/7/22, 9:35 PM Introduction and Array Implementation of Circular Queue - GeeksforGeeks
Login Register
C++
{
Start Your Coding Journey Now!
rear = 0;
arr[rear] = value;
Login Register
}
else
{
rear++;
arr[rear] = value;
}
}
// Function to delete element from Circular Queue
int Queue::deQueue()
{
if (front == -1)
{
printf("\nQueue is Empty");
return INT_MIN;
}
int data = arr[front];
arr[front] = -1;
if (front == rear)
{
front = -1;
rear = -1;
}
else if (front == size-1)
front = 0;
else
front++;
return data;
}
// Function displaying the elements
// of Circular Queue
void Queue::displayQueue()
{
if (front == -1)
{
printf("\nQueue is Empty");
return;
}
printf("\nElements in Circular Queue are: ");
if (rear >= front)
{
for (int i = front; i <= rear; i++)
printf("%d ",arr[i]); ▲
https://www.geeksforgeeks.org/introduction-and-array-implementation-of-circular-queue/ 5/20
11/7/22, 9:35 PM Introduction and Array Implementation of Circular Queue - GeeksforGeeks
}
Start Your Coding Journey Now!
else
{
Login Register
for (int i = front; i < size; i++)
printf("%d ", arr[i]);
for (int i = 0; i <= rear; i++)
printf("%d ", arr[i]);
}
}
/* Driver of the program */
int main()
{
Queue q(5);
// Inserting elements in Circular Queue
q.enQueue(14);
q.enQueue(22);
q.enQueue(13);
q.enQueue(-6);
// Display elements present in Circular Queue
q.displayQueue();
// Deleting elements from Circular Queue
printf("\nDeleted value = %d", q.deQueue());
printf("\nDeleted value = %d", q.deQueue());
q.displayQueue();
q.enQueue(9);
q.enQueue(20);
q.enQueue(5);
q.displayQueue();
q.enQueue(20);
return 0;
}
Java
Start Your Coding Journey Now!
// Declaring the class variables.
private int size, front, rear;
Login Register
// Declaring array list of integer type.
private ArrayList<Integer> queue = new ArrayList<Integer>();
// Constructor
CircularQueue(int size)
{
this.size = size;
this.front = this.rear = -1;
}
// Method to insert a new element in the queue.
public void enQueue(int data)
{
// Condition if queue is full.
if((front == 0 && rear == size - 1) ||
(rear == (front - 1) % (size - 1)))
{
System.out.print("Queue is Full");
}
// condition for empty queue.
else if(front == -1)
{
front = 0;
rear = 0;
queue.add(rear, data);
}
else if(rear == size - 1 && front != 0)
{
rear = 0;
queue.set(rear, data);
}
else
{
rear = (rear + 1);
// Adding a new element if
if(front <= rear)
{
queue.add(rear, data);
}
// Else updating old value ▲
https://www.geeksforgeeks.org/introduction-and-array-implementation-of-circular-queue/ 7/20
11/7/22, 9:35 PM Introduction and Array Implementation of Circular Queue - GeeksforGeeks
else
Start Your Coding Journey Now!
{
queue.set(rear, data);
Login Register
}
}
}
// Function to dequeue an element
// form th queue.
public int deQueue()
{
int temp;
// Condition for empty queue.
if(front == -1)
{
System.out.print("Queue is Empty");
// Return -1 in case of empty queue
return -1;
}
temp = queue.get(front);
// Condition for only one element
if(front == rear)
{
front = -1;
rear = -1;
}
else if(front == size - 1)
{
front = 0;
}
else
{
front = front + 1;
}
// Returns the dequeued element
return temp;
}
// Method to display the elements of queue
public void displayQueue()
{
// Condition for empty queue.
if(front == -1) ▲
https://www.geeksforgeeks.org/introduction-and-array-implementation-of-circular-queue/ 8/20
11/7/22, 9:35 PM Introduction and Array Implementation of Circular Queue - GeeksforGeeks
{
Start Your Coding Journey Now!
System.out.print("Queue is Empty");
return;
Login Register
}
// If rear has not crossed the max size
// or queue rear is still greater then
// front.
System.out.print("Elements in the " +
"circular queue are: ");
if(rear >= front)
{
// Loop to print elements from
// front to rear.
for(int i = front; i <= rear; i++)
{
System.out.print(queue.get(i));
System.out.print(" ");
}
System.out.println();
}
// If rear crossed the max index and
// indexing has started in loop
else
{
// Loop for printing elements from
// front to max size or last index
for(int i = front; i < size; i++)
{
System.out.print(queue.get(i));
System.out.print(" ");
}
// Loop for printing elements from
// 0th index till rear position
for(int i = 0; i <= rear; i++)
{
System.out.print(queue.get(i));
System.out.print(" ");
}
System.out.println();
}
}
// Driver code
public static void main(String[] args) ▲
https://www.geeksforgeeks.org/introduction-and-array-implementation-of-circular-queue/ 9/20
11/7/22, 9:35 PM Introduction and Array Implementation of Circular Queue - GeeksforGeeks
{
Start Your Coding Journey Now!
// Initialising new object of
Login Register
// CircularQueue class.
CircularQueue q = new CircularQueue(5);
q.enQueue(14);
q.enQueue(22);
q.enQueue(13);
q.enQueue(-6);
q.displayQueue();
int x = q.deQueue();
// Checking for empty queue.
if(x != -1)
{
System.out.print("Deleted value = ");
System.out.println(x);
}
x = q.deQueue();
// Checking for empty queue.
if(x != -1)
{
System.out.print("Deleted value = ");
System.out.println(x);
}
q.displayQueue();
q.enQueue(9);
q.enQueue(20);
q.enQueue(5);
q.displayQueue();
q.enQueue(20);
}
}
// This code is contributed by Amit Mangal.
C#
{
Start Your Coding Journey Now!
queue.Add(data);
}
Login Register
// Else updating old value
else
{
queue[rear]=data;
}
}
}
// Function to dequeue an element
// form th queue.
public int deQueue()
{
int temp;
// Condition for empty queue.
if(front == -1)
{
Console.Write("Queue is Empty");
// Return -1 in case of empty queue
return -1;
}
temp = queue[front];
// Condition for only one element
if(front == rear)
{
front = -1;
rear = -1;
}
else if(front == size - 1)
{
front = 0;
}
else
{
front = front + 1;
}
// Returns the dequeued element
return temp;
}
// Method to display the elements of queue
▲
https://www.geeksforgeeks.org/introduction-and-array-implementation-of-circular-queue/ 12/20
11/7/22, 9:35 PM Introduction and Array Implementation of Circular Queue - GeeksforGeeks
}
Start Your Coding Journey Now!
// Driver code
Login Register
static public void Main (){
// Initialising new object of
// CircularQueue class.
CircularQueue q = new CircularQueue(5);
q.enQueue(14);
q.enQueue(22);
q.enQueue(13);
q.enQueue(-6);
q.displayQueue();
int x = q.deQueue();
// Checking for empty queue.
if(x != -1)
{
Console.Write("Deleted value = ");
Console.Write(x+"\n");
}
x = q.deQueue();
// Checking for empty queue.
if(x != -1)
{
Console.Write("Deleted value = ");
Console.Write(x+"\n");
}
q.displayQueue();
q.enQueue(9);
q.enQueue(20);
q.enQueue(5);
q.displayQueue();
q.enQueue(20);
}
}
// This code is contributed by shruti456rawal
P ython 3
▲
https://www.geeksforgeeks.org/introduction-and-array-implementation-of-circular-queue/ 14/20
11/7/22, 9:35 PM Introduction and Array Implementation of Circular Queue - GeeksforGeeks
class CircularQueue():
Start Your Coding Journey Now!
Login Register
# constructor
def __init__(self, size): # initializing the class
self.size = size
# initializing queue with none
self.queue = [None for i in range(size)]
self.front = self.rear = -1
def enqueue(self, data):
# condition if queue is full
if ((self.rear + 1) % self.size == self.front):
print(" Queue is Full\n")
# condition for empty queue
elif (self.front == -1):
self.front = 0
self.rear = 0
self.queue[self.rear] = data
else:
# next position of rear
self.rear = (self.rear + 1) % self.size
self.queue[self.rear] = data
def dequeue(self):
if (self.front == -1): # condition for empty queue
print ("Queue is Empty\n")
# condition for only one element
elif (self.front == self.rear):
temp=self.queue[self.front]
self.front = -1
self.rear = -1
return temp
else:
temp = self.queue[self.front]
self.front = (self.front + 1) % self.size
return temp
def display(self):
# condition for empty queue
if(self.front == -1):
print ("Queue is Empty")
elif (self.rear >= self.front):
▲ queue are:",
print("Elements in the circular
https://www.geeksforgeeks.org/introduction-and-array-implementation-of-circular-queue/ 15/20
11/7/22, 9:35 PM Introduction and Array Implementation of Circular Queue - GeeksforGeeks
Output
Deleted value = 14
Deleted value = 22
Queue is Full
2. Traffic system: In computer controlled traffic system, circular queues are used to
switch on the traffic lights one by one repeatedly as per the time set.
3. CPU Scheduling : Operating systems of ten maintain a queue of processes that are
ready to execute or that are waiting for a par ticular event to occur.
This ar ticle is contributed by Akash Gupta. If you like GeeksforGeeks and would like to
contribute, you can also write an ar ticle using write.geeksforgeeks.org or mail your
Like 164
Previous Next
https://www.geeksforgeeks.org/introduction-and-array-implementation-of-circular-queue/ 17/20