Circular Queue Program in C

Previous
Next
#include<stdio.h>
#define SIZE 5
int cqueue[SIZE];
int front=-1, rear=-1;
void enqueue(int);
int dequeue(void);
void display(void);
int underflow(void);
int overflow(void);
void main()
{
	int ch,item;
	printf("***Circular Queue Operations***\n");
	while(1)
	{
		printf("1. Insert \n");
		printf("2. Delete \n");
		printf("3. Display \n");
		printf("4. Exit \n");
		printf("Enter your choice : ");
		scanf("%d",&ch);
		switch(ch)
		{
			case 1    :	if(!overflow())
					{
						printf("Enter item to insert : ");
						scanf("%d",&item);
						enqueue(item);
					}
					else
					{
						printf("Queue is Full\n\n");
					}
					break;

			case 2    :	if(!underflow())
					{
						int ele = dequeue();
				   		printf("Deleted : %d\n\n",ele);
					}
					else
					{
						printf("Queue is Empty\n\n");
					}
					break;

			case 3    :	if(!underflow())
					{
						printf("The queue is : \n");
						display();
					}
					else
					{
						printf("No elements to display \n");
					}
					break;

			case 4    :	exit(1);
			default   :	printf("Your choice is wrong \n\n");
		}
	}
}


int underflow()
{
	if((front==-1)&&(rear==-1))
	{
		return 1;
	}
	else
	{
		return 0;
	}
}


int overflow()
{
	if(((front==0)&&(rear==SIZE-1))||(front==rear+1))
	{
		return 1;
	}
	else
	{
		return 0;
	}
}

void enqueue(int item)
{
	if((front==-1)&&(rear==-1))
	{
		front=0;
		rear=0;
	}
	else if(rear==SIZE-1)
	{
		rear=0;
	}
	else
	{
		rear++;
	}
	cqueue[rear]=item;
	printf("Inserted : %d\n\n",item);
}

int dequeue()
{
	int item ;
	item = cqueue[front];
	if(front==rear)
	{
		front=-1;
		rear=-1;
	}
	else if(front==SIZE-1)
	{	
		front=0;
	}
	else
	{
		front=front+1;
	}
	return item ;
}

void display()
{
	int i;
	if(front<=rear)
	{
		for(i=front ; i<=rear ; i++)
		{
			printf("Element %d : %d \n", i+1, cqueue[i]);
		}
	}
	else
	{
		for(i=front ; i<=SIZE-1; i++)
		{
			printf("Element %d : %d \n",i+1,cqueue[i]);
		}
		for(i=0 ; i<=rear ; i++)
		{
			printf("Element %d : %d \n",i+1,cqueue[i]);
		}
	}
}
Previous
Next

Add Comment

Courses Enquiry Form