This is a simple C program of the various operation on a dequeue.
#include<stdio.h>
void input_re();
void output_re();
void insert_rear();
void insert_front();
void delet_front();
void delet_rear();
void display();
int dq[50],n,ch,rear=-1,front=-1,d,x,i;
main()
{
int ch,c;
printf("\nEnter the size of deque:");
scanf("%d",&n);
do{
printf(" MENU\n1.input restricted deque\n2.output restricted deque");
printf("\n enter the choice");
scanf("%d",&ch);
switch(ch)
{
case 1:
input_re();
break;
case 2:
output_re();
break;
default:
printf("\n Wrong option");
}
printf("\n do you want to continue::");
scanf("%d",&c);
}while(c==1);
}
void input_re()
{
int c;
do
{
int ch;
printf("MENU\n1.insert rear\n2.delete front\n3.delete rear\n4.display");
printf("\n enter the choice");
scanf("%d",&ch);
switch(ch)
{
case 1:
insert_rear();
break;
case 2:
delet_front();
break;
case 3:
delet_rear();
break;
case 4:
display();
break;
default:
printf("\n Wrong option");
}
printf("\n do you want to continue the input restricted function :");
scanf("%d",&c);
}while(c==1);
}
void output_re()
{
int ch,c;
do
{
printf("menu\n1.insert rear\n2.insert front\n3.delet from front\n4.display");
printf(" enter the choice");
scanf("%d",&ch);
switch(ch)
{
case 1:
insert_rear();
break;
case 2:
insert_front();
break;
case 3:
delet_front();
break;
case 4:
display();
break;
default:
printf(" invalid option");
}
printf("\n do you want to continue the output restricted function:");
scanf("%d",&c);
}while(c==1);
}
void insert_rear()
{
printf("\n enter the element to be inserted");
scanf("%d",&x);
if(((front==0)&&(rear==n-1))||(front==rear+1))
printf("\n deque overflow");
else
if((front==-1)&&(rear==-1))
{front=0;
rear=0;
dq[rear]=x;
}
else
rear=(rear+1)%n;
dq[rear]=x;
}
void insert_front()
{
printf("\n enter the element to insert:");
scanf("%d",&x);
if(((front==0)&&(rear==n-1))||(front==rear+1))
printf("\n deque is full");
else if((front==-1)&&(rear==-1))
front=rear=0;
else
{
if(front==0)
front=n-1;
else
front=front-1;
dq[front]=x;
}}
void delet_front()
{
if((front==-1)&&(rear==-1))
printf("\n deque is empty");
else
{
if(front==rear)
{
front=-1;
rear=-1;
}
else
front++;
}
}
void delet_rear()
{
if((front==-1)&&(rear==-1))
printf("\n deque is empty");
else
{
if(front==rear)
{
front=-1;
rear=-1;
}
else
{
if(rear==0)
rear=n-1;
else
rear=rear-1;
}
}
}
void display()
{
if((front==-1)&&(rear==-1))
printf("\n deque is empty");
else
{
if(front>rear)
{
for(i=front;i<n;i++)
{
d=dq[i];
printf("%d\t",d);
}
for(i=0;i<=rear;i++)
{
d=dq[i];
printf("%d\t",d);
}
}
else
{
for(i=front;i<=rear;i++)
{
d=dq[i];
printf("%d\t",d);
}
}
}
}