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

A Circular Queue in C

A circular queue is a linear data structure that is similar to a regular queue but with the last node connected back to the first node, forming a circle. This solves limitations of the normal queue by making better use of unused memory locations. Common operations on a circular queue are enqueue, dequeue, front, and rear. Circular queues are useful for applications like memory management, traffic light systems, and CPU scheduling where processes wait to be executed.

Uploaded by

akurathikotaiah
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
99 views

A Circular Queue in C

A circular queue is a linear data structure that is similar to a regular queue but with the last node connected back to the first node, forming a circle. This solves limitations of the normal queue by making better use of unused memory locations. Common operations on a circular queue are enqueue, dequeue, front, and rear. Circular queues are useful for applications like memory management, traffic light systems, and CPU scheduling where processes wait to be executed.

Uploaded by

akurathikotaiah
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

Circular Queue

A circular queue in C stores the data in a very practical manner. It is a linear data structure. It is very
similar to the queue. The only difference is that the last node is connected back to the first node. Thus it
is called a circular queue.

Circular Queue In C

A circular queue solved the limitations of the normal queue. Thus making it a
better pick than the normal queue. It also follows the first come first serve
algorithm. Circular Queue is also called ring Buffer.

Operations On A Circular Queue

Enqueue- adding an element in the queue if there is space in the queue.

Dequeue- Removing elements from a queue if there are any elements in


the queue

Front- get the first item from the queue.

Rear- get the last item from the queue.

isEmpty/isFull- checks if the queue is empty or full.

Applications:

1. Memory Management: The unused memory locations in the case of ordinary queues
can be utilized in circular queues.
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 often maintain a queue of processes that are ready
to execute or that are waiting for a particular event to occur.
#include<stdio.h>
# define MAX 5
int cqueue_arr[MAX];
int front = -1;
int rear = -1;
void insert(int item)
{
if((front == 0 && rear == MAX-1) || (front == rear+1))
{
printf("Queue Overflow n");
return;
}
if(front == -1)
{
front = 0;
rear = 0;
}
else
{
if(rear == MAX-1)
rear = 0;
else
rear = rear+1;
}
cqueue_arr[rear] = item ;
}
void deletion()
{
if(front == -1)
{
printf("Queue Underflown");
return ;
}
printf("Element deleted from queue is : %dn",cqueue_arr[front]);
if(front == rear)
{
front = -1;
rear=-1;
}
else
{
if(front == MAX-1)
front = 0;
else
front = front+1;
}
}
void display()
{
int front_pos = front,rear_pos = rear;
if(front == -1)
{
printf("Queue is emptyn");
return;
}
printf("Queue elements :n");
if( front_pos <= rear_pos )
while(front_pos <= rear_pos)
{
printf("%d ",cqueue_arr[front_pos]);
front_pos++;
}
else
{
while(front_pos <= MAX-1)
{
printf("%d ",cqueue_arr[front_pos])
front_pos++;
}
front_pos = 0;
while(front_pos <= rear_pos)
{
printf("%d ",cqueue_arr[front_pos]);
front_pos++;
}
}
printf("n");
}
void main()
{
int choice,item;
do
{
printf("1.Insertn");
printf("2.Deleten");
printf("3.Displayn");
printf("4.Quitn");
printf("Enter your choice : ");
scanf("%d",&choice);
switch(choice)
{
case 1 :
printf("Input the element for insertion in queue : ");
scanf("%d", &item);
insert(item);
break;
case 2 :
deletion();
break;
case 3:
display();
break;
case 4:
break;
default:
printf("Wrong choicen");
}
}
while(choice!=4);
getch();
}

You might also like