1// Aim: Program to perform Double Ended Queue operations (Insertion, Deletion).
2#include<stdio.h>
3int a[20],size,f,r;
4void push(int item){
5 if(f==0&&r==size-1){
6 printf("Queue is full\n");
7 }
8 else if(f==-1&&r==-1){
9 f=r=0;
10 a[f]=item;
11 }
12 else if(f>0){
13 f--;
14 a[f]=item;
15 }
16 else{
17 for(int i=r;i>=f;i--){
18 a[i+1]=a[i];
19 }
20 r++;
21 a[f]=item;
22 }
23}
24void pop(){
25 if(f==-1&&r==-1){
26 printf("Queue is empty\n");
27 }
28 else if(f==r){
29 printf("Deleted element is %d\n",a[f]);
30 f=r=-1;
31 }
32 else{
33 printf("Deleted element is %d\n",a[f]);
34 f++;
35 }
36}
37void inject(int item){
38 if(f==0&&r==size-1){
39 printf("Queue is full\n");
40 }
41 else if(f==-1&&r==-1){
42 f=r=0;
43 a[r]=item;
44 }
45 else if(r<size-1){
46 r++;
47 a[r]=item;
48 }
49 else{
50 for(int i=f;i<=r;i++){
51 a[i-1]=a[i];
52 }
53 f--;
54 a[r]=item;
55 }
56}
57void eject(){
58 if(f==-1&&r==-1){
59 printf("Queue is empty\n");
60 }
61 else if(f==r){
62 printf("Deleted element is %d\n",a[f]);
63 f=r=-1;
64 }
65 else{
66 printf("Deleted element is %d\n",a[r]);
67 r--;
68 }
69}
70void display(){
71 int i;
72 if(f==-1&&r==-1){
73 printf("Queue is empty\n");
74 }
75 else{
76 for(i=f;i<=r;i++){
77 printf("%d\t",a[i]);
78 }
79 }
80}
81void main(){
82 int ch,item;
83 printf("Enter the size of the queue\n");
84 scanf("%d",&size);
85 f=r=-1;
86 do{
87 printf("\n1.Push\n2.Pop\n3.Inject\n4.Eject\n5.Display\n6.Exit\n");
88 printf("Enter your choice\n");
89 scanf("%d",&ch);
90 switch(ch){
91 case 1: printf("Enter the element to be pushed\n");
92 scanf("%d",&item);
93 push(item);
94 break;
95 case 2: pop();
96 break;
97 case 3: printf("Enter the element to be injected\n");
98 scanf("%d",&item);
99 inject(item);
100 break;
101 case 4: eject();
102 break;
103 case 5: display();
104 break;
105 case 6: break;
106 default: printf("Invalid choice\n");
107 }
108 }while(ch!=6);
109}