Queue Implementation using Structure

Rumman Ansari   Software Engineer   2022-03-02   6140 Share
☰ Table of Contents

Table of Content:


Like stacks, queues are lists. With a queue, however, insertion is done at one end, whereas deletion is performed at the other end. Queue implementation using structure are given below

queue data structure

The basic operations on a queue are enqueue, which inserts an element at the end of the list (called the rear), and dequeue, which deletes (and returns) the element at the start of the list (known as the front).

Insert into queue function

void insert()
{
int item;
printf("Element : ");
scanf("%d",&item);
	if(front==(rear+1)%3)
	{
	printf("Queue is Full");
	return;
	}
	
	if(front==-1)
	{
	rear=front=0;
	}
	else
	{
	rear=(rear+1)%3;
	}
cque.cqueue[rear]=item;
printf("Successfully Insert");
}

Delete into queue function

void del()
{
int num;
	if(front==-1)
	{
	printf("Queue Empty");
	return;
	}
	else
	{
	num=cque.cqueue[front];
	printf("Deleted item : %d",num);
	}
	
	if(front==rear)
	{
	front=-1;
	}
	else
	front=(front+1)%3;
	}

Display from queue

void display()
{
int i;
	if(front==-1)
	{
	printf("Queue Empty");
	return;
	}
else
	{
	printf("\n\nItems : ");
	for(i=front;i<=rear;i++)
		{
		printf("   %d",cque.cqueue[i]);
		}
	}
}

program of queue using structure

/***  program of queue  ****/ 

#include
#include

void insert();
void del();
void display();

struct circ
{
int cqueue[5];
};

struct  circ cque;
int rear=0,front=-1;

void main()
{
     while(1)
    {
	int num;
 	//clrscr();
	printf("\n1.Insertion\n2.Deletion\n3.Display\n0.Exit\n");
	printf("\n\nSelect Option : ");
	scanf("%d",&num);
		switch(num)
		{
			case 1:
				insert();
				break;
			case 2:
				del();
				break;
			case 3:
				display();
				break;
			case 0:
				exit(0);
				break;
			default:
				printf("\n\nInvalid Option ");
			}
		getch();
	}
}

void insert()
{
int item;
printf("Element : ");
scanf("%d",&item);
	if(front==(rear+1)%3)
	{
	printf("Queue is Full");
	return;
	}
	
	if(front==-1)
	{
	rear=front=0;
	}
	else
	{
	rear=(rear+1)%3;
	}
cque.cqueue[rear]=item;
printf("Successfully Insert");
}

void del()
{
int num;
	if(front==-1)
	{
	printf("Queue Empty");
	return;
	}
	else
	{
	num=cque.cqueue[front];
	printf("Deleted item : %d",num);
	}
	
	if(front==rear)
	{
	front=-1;
	}
	else
	front=(front+1)%3;
	}

void display()
{
int i;
	if(front==-1)
	{
	printf("Queue Empty");
	return;
	}
else
	{
	printf("\n\nItems : ");
	for(i=front;i<=rear;i++)
		{
		printf("   %d",cque.cqueue[i]);
		}
	}
}

Output:


1.Insertion
2.Deletion
3.Display
0.Exit


Select Option : 2
Queue Empty
1.Insertion
2.Deletion
3.Display
0.Exit


Select Option : 1
Element : 10
Successfully Insert
1.Insertion
2.Deletion
3.Display
0.Exit


Select Option : 1
Element : 12
Successfully Insert
1.Insertion
2.Deletion
3.Display
0.Exit


Select Option : 3


Items :    10   12
1.Insertion
2.Deletion
3.Display
0.Exit


Select Option : 0
Press any key to continue . . .