Double Ended Queue
Double Ended Queue
Roll:No : 42 Experiment No : 9
/***********************************************************************************/
PROGRAM
#include <stdio.h>
int a[20],size,front,rear;
int i;
if(front==0&&rear==size-1)
printf("\nDeque is full.");
else if(rear==-1&&front==-1)
front=rear=0;
a[front]=item;
else if(front>0)
front=front-1;
a[front]=item;
else
for(i=rear;i>=front;i--)
{
a[i+1]=a[i];
a[front]=item;
rear=rear+1;
int i;
if(front==0&&rear==size-1)
printf("\nDeque is full.");
else if(rear==-1&&front==-1)
front=rear=0;
a[rear]=item;
else if(rear<size-1)
rear=rear+1;
a[rear]=item;
else
for(i=front;i<=rear;i++)
a[i-1]=a[i];
}
a[rear]=item;
front=front-1;
void pop_dq()
if(rear==-1&&front==-1)
printf("\nDeque is empty.");
else if(front==rear)
front=rear=-1;
else
front=front+1;
void eject_dq()
if(rear==-1&&front==-1)
printf("\nDeque is empty.");
else if(front==rear)
{
printf("\nEjected item is:%d",a[front]);
front=rear=-1;
else
rear=rear-1;
void display_dq()
int i;
if(rear==-1&&front==-1)
printf("\nDeque is empty.");
else
for(i=front;i<=rear;i++)
printf("\t%d",a[i]);
void main()
int opt,item;
front=rear=-1;
do
printf("\nChoose an operation to
perform;\n(1)PUSH\n(2)POP\n(3)INJECT\n(4)EJECT\n(5)DISPLAY\n(6)EXIT\n");
scanf("%d",&opt);
switch(opt)
scanf("%d",&item);
push_dq(item);
break;
case 2:pop_dq();
break;
scanf("%d",&item);
inject_dq(item);
break;
case 4:eject_dq();
break;
case 5:display_dq();
break;
case 6:break;
default:printf("\nInvalid option.");
}while(opt!=6);
}
/***********************************************************************************/
OUTPUT
Enter the size of the queue:3
(1)PUSH
(2)POP
(3)INJECT
(4)EJECT
(5)DISPLAY
(6)EXIT
(1)PUSH
(2)POP
(3)INJECT
(4)EJECT
(5)DISPLAY
(6)EXIT
(1)PUSH
(2)POP
(3)INJECT
(4)EJECT
(5)DISPLAY
(6)EXIT
(2)POP
(3)INJECT
(4)EJECT
(5)DISPLAY
(6)EXIT
Deque is full.
(1)PUSH
(2)POP
(3)INJECT
(4)EJECT
(5)DISPLAY
(6)EXIT
4 2 3
(1)PUSH
(2)POP
(3)INJECT
(4)EJECT
(5)DISPLAY
(6)EXIT
(1)PUSH
(2)POP
(3)INJECT
(4)EJECT
(5)DISPLAY
(6)EXIT
(1)PUSH
(2)POP
(3)INJECT
(4)EJECT
(5)DISPLAY
(6)EXIT
(1)PUSH
(2)POP
(3)INJECT
(4)EJECT
(5)DISPLAY
(6)EXIT
Deque is empty.
(1)PUSH
(2)POP
(3)INJECT
(4)EJECT
(5)DISPLAY
(6)EXIT
Deque is empty.
(1)PUSH
(2)POP
(3)INJECT
(4)EJECT
(5)DISPLAY
(6)EXIT
/***********************************************************************************/