#include<stdio.
h>
#include<conio.h>
#define MAX 5
typedef struct double_ended_queue
{ int data[MAX];
int rear;
int front;
}deque;
void insertion_rear_end(deque *,int);
void deletion_front_end(deque *);
void insertion_front_end(deque *,int);
void deletion_rear_end(deque *);
void display(deque);
void main()
{ int ch,item;
deque dq;
[Link]=-1;
[Link]=-1;
do
{ clrscr();
printf("\n 1. insert at rear end ");
printf("\n 2. deletion from front end");
printf("\n 3. insert at front end ");
printf("\n 4. deletion from rear end");
printf("\n 5. display ");
printf("\n 0. exit ");
printf("\n Enter your choice :");
scanf("%d",&ch);
switch(ch)
{ case 1 : printf("\n Enter the data :");
scanf("%d",&item);
insertion_rear_end(&dq,item);
break;
case 2 : deletion_front_end(&dq);
break;
case 3 : printf("\n Enter the data :");
scanf("%d",&item);
insertion_front_end(&dq,item);
break;
case 4 : deletion_rear_end(&dq);
break;
case 5 : display(dq);
break;
case 0 : break;
getch();
}while(ch!=0);
void insertion_rear_end(deque *dq,int n)
{ if(dq->rear==MAX-1)
{ printf("\n Insertion Not possible");
return;
dq->rear=dq->rear+1;
dq->data[dq->rear]=n;
printf("\n One item inserted successfully ");
void deletion_front_end(deque *dq)
{ int item;
if(dq->rear==dq->front)
{ printf("\n Empty Queue");
return;
dq->front=dq->front+1;
item=dq->data[dq->front];
printf("\n The deleted item is :%d",item);
}
void insertion_front_end(deque *dq,int n)
{ if(dq->front==-1)
{ printf("\n Insertion Not possible");
return;
dq->data[dq->front]=n;
dq->front=dq->front-1;
printf("\n One item inserted successfully ");
void deletion_rear_end(deque *dq)
{ int item;
if(dq->rear==dq->front)
{ printf("\n Empty Queue");
return;
item=dq->data[dq->rear];
dq->rear=dq->rear-1;
printf("\n The deleted item is :%d",item);
}
void display(deque dq)
{ int i;
if([Link]==[Link])
{ printf("\n Empty Queue");
return;
printf("\n The deque is given below :");
for(i=[Link]+1;i<=[Link];i++)
{ printf("\n %d",[Link][i]);