Doubly Ended
Doubly Ended
#include <stdio.h>
#define MAX 4
int deque[MAX];
int front = -1;
int rear = -1;
int ch = 0, n = 0;
void enque_front(int n);
void enque_rear(int n);
void deque_front();
void deque_rear();
void display();
void main()
{
while (ch != 6)
{
printf("\n1. Enqueue Front\n2. Enqueue Rear\n3. Dequeue Front\n4. Dequeue Rear\n5.
Display\n6.Exit\n");
printf("Enter your choice: ");
scanf("%d", &ch);
switch (ch)
{
case 1:
printf("Enter the element to push at front: ");
scanf("%d", &n);
enque_front(n);
break;
case 2:
printf("Enter the element to push at rear: ");
scanf("%d", &n);
enque_rear(n);
break;
case 3:
deque_front();
break;
case 4:
deque_rear();
break;
case 5:
display();
break;
case 6:
printf("Exiting\n");
break;
default:
printf("Invalid choice\n");
}}}
void enque_front(int item)
{if ((front == 0 && rear == MAX - 1) || (front == rear + 1))
{
printf("Overflow\n");
}
else
{
if (front == -1)
{
front = rear = 0;
}
else if (front == 0)
{
front = MAX - 1;
}
else
{
front--;
}
deque[front] = item;
printf("Inserted %d at front\n", item);
}}
void enque_rear(int item)
{
if ((front == 0 && rear == MAX - 1) || (front == rear + 1))
{
printf("Overflow\n");
}
else
{
if (front == -1)
{
front = rear = 0;
}
else if (rear == MAX - 1)
{
rear = 0;
}
else
{
rear++;
}
deque[rear] = item;
printf("Inserted %d at rear\n", item);
}}
void deque_front()
{
if (front == -1)
{
printf("Underflow\n");}
else
{
printf("Removed %d from front\n", deque[front]);
if (front == rear)
{
front = rear = -1;
}
else
{
if (front == MAX - 1)
{
front = 0;
}
else
{
front++;
}}}}
void deque_rear()
{
if (rear == -1)
{
printf("Underflow\n");
}
else
{
printf("Removed %d from rear\n", deque[rear]);
if (front == rear)
{
front = rear = -1;
}
else if (rear == 0)
{
rear = MAX - 1;
}
else
{
rear--;
}}}
void display()
{
if (front == -1)
{
printf("Deque is empty\n");
}
else{
printf("Deque elements are: ");
int i = front;
while (1)
{
printf("%d ", deque[i]);
if (i == rear)
break;
i = (i + 1) % MAX;
}
printf("\n");
}}
OUTPUT
ubuntu@ubuntu-H81M-S:~/AshwinHarikumar-10$ ./a.out
1. Enqueue Front
2. Enqueue Rear
3. Dequeue Front
4. Dequeue Rear
5. Display
6. Exit
Enter your choice: 1
Enter the element to push at front: 56
Inserted 56 at front
1. Enqueue Front
2. Enqueue Rear
3. Dequeue Front
4. Dequeue Rear
5. Display
6. Exit
Enter your choice: 2
Enter the element to push at rear: 89
Inserted 89 at rear
1. Enqueue Front
2. Enqueue Rear
3. Dequeue Front
4. Dequeue Rear
5. Display
6. Exit
Enter your choice: 2
Enter the element to push at rear: 99
Inserted 99 at rear
1. Enqueue Front
2. Enqueue Rear
3. Dequeue Front
4. Dequeue Rear
5. Display
6. Exit
Enter your choice: 1
Enter the element to push at front: 55
Inserted 55 at front
1. Enqueue Front
2. Enqueue Rear
3. Dequeue Front
4. Dequeue Rear
5. Display
6. Exit
Enter your choice: 1
Enter the element to push at front: 23 Overflow
1. Enqueue Front
2. Enqueue Rear
3. Dequeue Front
4. Dequeue Rear
5. Display
6. Exit
Enter your choice: 5
Deque elements are: 55 56 89 99
1. Enqueue Front
2. Enqueue Rear
3. Dequeue Front
4. Dequeue Rear
5. Display
6. Exit
Enter your choice: 4 Removed 99 from rear
1. Enqueue Front
2. Enqueue Rear
3. Dequeue Front
4. Dequeue Rear
5. Display
6. Exit
Enter your choice: 5
Deque elements are: 55 56 89
1. Enqueue Front
2. Enqueue Rear
3. Dequeue Front
4. Dequeue Rear
5. Display
6. Exit
Enter your choice: 3 Removed 55 from front
1. Enqueue Front
2. Enqueue Rear
3. Dequeue Front
4. Dequeue Rear
5. Display
6. Exit
Enter your choice: 5 Deque elements are: 56 89
1. Enqueue Front
2. Enqueue Rear
3. Dequeue Front
4. Dequeue Rear
5. Display
6. Exit
Enter your choice: 4 Removed 89 from rear
1. Enqueue Front
2. Enqueue Rear
3. Dequeue Front
4. Dequeue Rear
5. Display
6. Exit
Enter your choice: 6
Exiting