Double Ended Queue (Dequeue) in C

Twofold Ended Queue (Dequeue) in C

In this instructional exercise, you will find out about twofold finished line (dequeue) in C.

What is Dequeue?

The word dequeue is a short type of twofold finished line. In a dequeue, inclusion just as cancellation can be completed either at the backside or the front end.

Activities on a Dequeue

introduce(): Make the line unfilled

void(): Determine if line is vacant

full(): Determine if the line is full

enqueueF(): Insert a component at the front finish of the line

enqueueR(): Insert a component at the backside of the line

dequeueR(): Delete the back component

dequeueF(): Delete the front component

print(): Print components of the line

A-C program is given beneath which shows how different tasks can be performed on a twofold finished line spoke to by roundabout cluster.

Double Ended Queue (Dequeue) in C

#include<stdio.h>
#include<process.h>
#define MAX 30
 
typedef struct dequeue
{
	int data[MAX];
	int rear,front;
}dequeue;
 
void initialize(dequeue *p);
int empty(dequeue *p);
int full(dequeue *p);
void enqueueR(dequeue *p,int x);
void enqueueF(dequeue *p,int x);
int dequeueF(dequeue *p);
int dequeueR(dequeue *p);
void print(dequeue *p);
 
void main()
{
	int i,x,op,n;
	dequeue q;
	
	initialize(&q);
	
	do
	{
		printf("\n1.Create\n2.Insert(rear)\n3.Insert(front)\n4.Delete(rear)\n5.Delete(front)");
		printf("\n6.Print\n7.Exit\n\nEnter your choice:");
		scanf("%d",&op);
		
		switch(op)
		{
			case 1: printf("\nEnter number of elements:");
					scanf("%d",&n);
					initialize(&q);
					printf("\nEnter the data:");
					
					for(i=0;i<n;i++)
					{
						scanf("%d",&x);
						if(full(&q))
						{
							printf("\nQueue is full!!");
							exit(0);
						}
						enqueueR(&q,x);
					}
					break;
					
			case 2: printf("\nEnter element to be inserted:");
					scanf("%d",&x);
							
					if(full(&q))
					{
						printf("\nQueue is full!!");
						exit(0);
					}
					
					enqueueR(&q,x);
					break;
							
			case 3: printf("\nEnter the element to be inserted:");
					scanf("%d",&x);
							
					if(full(&q))
					{
						printf("\nQueue is full!!");
						exit(0);
					}
					
					enqueueF(&q,x);
					break;
							
			case 4: if(empty(&q))
					{
						printf("\nQueue is empty!!");
						exit(0);
					}
							
					x=dequeueR(&q);
					printf("\nElement deleted is %d\n",x);
					break;
					
			case 5: if(empty(&q))
					{
						printf("\nQueue is empty!!");
						exit(0);
					}
							
					x=dequeueF(&q);
					printf("\nElement deleted is %d\n",x);
					break;
							
			case 6: print(&q);
					break;
					
			default: break;
		}
	}while(op!=7);
}
 
void initialize(dequeue *P)
{
	P->rear=-1;
	P->front=-1;
}
 
int empty(dequeue *P)
{
	if(P->rear==-1)
		return(1);
	
	return(0);
}
 
int full(dequeue *P)
{
	if((P->rear+1)%MAX==P->front)
		return(1);
	
	return(0);
}
 
void enqueueR(dequeue *P,int x)
{
	if(empty(P))
	{
		P->rear=0;
		P->front=0;
		P->data[0]=x;
	}
	else
	{
		P->rear=(P->rear+1)%MAX;
		P->data[P->rear]=x;
	}
}
 
void enqueueF(dequeue *P,int x)
{
	if(empty(P))
	{
		P->rear=0;
		P->front=0;
		P->data[0]=x;
	}
	else
	{
		P->front=(P->front-1+MAX)%MAX;
		P->data[P->front]=x;
	}
}
 
int dequeueF(dequeue *P)
{
	int x;
	
	x=P->data[P->front];
	
	if(P->rear==P->front)	//delete the last element
		initialize(P);
	else
		P->front=(P->front+1)%MAX;
	
	return(x);
}
 
int dequeueR(dequeue *P)
{
	int x;
	
	x=P->data[P->rear];
	
	if(P->rear==P->front)
		initialize(P);
	else
		P->rear=(P->rear-1+MAX)%MAX;
		
	return(x);
}
 
void print(dequeue *P)
{
	if(empty(P))
	{
		printf("\nQueue is empty!!");
		exit(0);
	}
	
	int i;
	i=P->front;
	
	while(i!=P->rear)
	{
		printf("\n%d",P->data[i]);
		i=(i+1)%MAX;
	}
	
	printf("\n%d\n",P->data[P->rear]);
}

Output

1.Create
2.Insert(rear)
3.Insert(front)
4.Delete(rear)
5.Delete(front)
6.Print
7.Exit
Enter your choice:1

Enter number of elements:3

Enter the data:4 6 7

1.Create
2.Insert(rear)
3.Insert(front)
4.Delete(rear)
5.Delete(front)
6.Print
7.Exit

Enter your choice:6

4
6
7

1.Create
2.Insert(rear)
3.Insert(front)
4.Delete(rear)
5.Delete(front)
6.Print
7.Exit

Enter your choice:4

Element deleted is 7

1.Create
2.Insert(rear)
3.Insert(front)
4.Delete(rear)
5.Delete(front)
6.Print
7.Exit

Enter your choice:7

Remark underneath on the off chance that you discovered anything erroneous in the above program for the twofold finished line (dequeue) in C.

Leave a Comment

error: Alert: Content is protected!!