Circular Queue is a linear data structure in which the operations are performed based on FIFO (First In First Out) principle and the last position is connected back to the first position to make a circle.

**Implementation of Circular Queue**

To implement a circular queue data structure using array, we first perform the following steps before we implement actual operations.

- Create a one dimensional array with size SIZE (int cQueue[SIZE])
- Define two integer variables ‘front’ and ‘rear’ and initialize both with ‘-1’. (int front = -1, rear = -1)

**enQueue(value) – Inserting value into the Circular Queue**

In a circular queue, enQueue() is a function which is used to insert an element into the circular queue. In a circular queue, the new element is always inserted at rear position.We can use the following steps to insert an element into the circular queue

- Check whether queue is FULL. ((rear == SIZE-1 && front == 0) || (front == rear+1))

Second condition will arise when elements were removed from the queue. - If it is FULL, then display “Queue is FULL!!! Insertion is not possible!!!” and terminate the function.
- If it is NOT FULL, then check rear == SIZE – 1 && front != 0 if it is TRUE, then set rear = -1.

This case will arise when element are removed from the queue. In this case front will be non zero due to removal of element from the head of the queue. - Increment rear value by one (rear++), set queue[rear] = value and check ‘front == -1’ if it is TRUE, then set front = 0.

**deQueue() – Deleting a value from the Circular Queue**

In a circular queue, deQueue() is a function used to delete an element from the circular queue. In a circular queue, the element is always deleted from front position. We can use the following steps to delete an element from the circular queue…

- Check whether queue is EMPTY. (front == -1 && rear == -1)
- If it is EMPTY, then display “Queue is EMPTY!!! Deletion is not possible!!!” and terminate the function.
- If it is NOT EMPTY, then display queue[front] as deleted element and increment the front value by one (front ++). Then check whether front == SIZE, if it is TRUE, then set front = 0. Then check whether both front – 1 and rear are equal (front -1 == rear), if it TRUE, then set both front and rear to ‘-1’ (front = rear = -1).

**display() – Displays the elements of a Circular Queue**

We can use the following steps to display the elements of a circular queue…

- Check whether queue is EMPTY. (front == -1)
- If it is EMPTY, then display “Queue is EMPTY!!!” and terminate the function.
- If it is NOT EMPTY, then define an integer variable ‘i’ and set ‘i = front’.
- Check whether ‘front <= rear’, if it is TRUE, then display ‘queue[i]’ value and increment ‘i’ value by one (i++). Repeat the same until ‘i <= rear’ becomes FALSE.
- If ‘front <= rear’ is FALSE, then display ‘queue[i]’ value and increment ‘i’ value by one (i++). Repeat the same until’i <= SIZE – 1′ becomes FALSE.
- Set i to 0. Again display ‘cQueue[i]’ value and increment i value by one (i++). Repeat the same until ‘i <= rear’ becomes FALSE.