**Linear Queue:**

- Linear queue follows “First In First Out” rule.
- We insert elements from Rear and delete from Front.
- In linear queue, “Front” is fixed location.
- When we delete an element from the queue, shifting of elements takes much time.

**Circular Queue:**

- Solution to Linear Queue data structure is Circular queue.
- In circular queue, we are representing the Linear Queue in circle form.
- We can move front location also after deletion of element from the queue.
- We can move both front and rear locations while inserting and deleting the elements.
- As front value is not fixed, front and rear values starts with -1

**Declaration:**

- We declare array variable with fixed size.
- Front and Rear variables are used to process the location data.
- Front and Rear variables not pointing to any location initially.
- Front location is not fixed in Circular Queue.
- int cqueue[8];

- int front=-1;
- int rear=-1;

**Operations: We can perform following operations on Circular Queue.**

- Insertion
- Deletion
- Display

**Insertion:**

- The following diagrams describe the queue initially.
- Inserting elements from ‘rear’.
- First insertion changes both the values of front and rear variables.
- Continues insertion of elements results “Queue is full”.

**Deletion:**

- Deleting elements using ‘front’ variable.
- After deletion of element, front value increase by 1.

When we insert the element and it rear value reaches size-1 then rear value again starts from 0.

**Queue is Full:** Inserting the elements continuously leads to Queue is Full condition

In circular queue, we need to check 2 situations for “Queue is Full” condition.

**Deleting elements to make the front pointing to last location of Queue:**

**Note:** While continuously deleting the elements, if it reaches the location “size-1”, it starts with 0 again in the next cycle.

- When front and rear values are equal means Queue has only 1 element.
- When we remove the last element from the queue, then front and read values become -1.

**Display(): **There are 2 cases to display the elements from the circular queue.

**Case1 :**Rear greater than front**Case2 :**Front greater than rear