Day 10 of DSA in C
Write a menu driven C program to create a doubly ended queue (DEQue) and perform basic functions on it.
#include <stdio.h>
#include <stdlib.h>
#define MAX 5
int deque[MAX];
int front = -1, rear = -1;
int isFull() {
return (front == 0 && rear == MAX - 1) || (front == rear + 1);
}
int isEmpty() {
return front == -1;
}
void insertFront(int value) {
if (isFull()) {
printf("Deque Overflow!\n");
return;
}
if (isEmpty()) {
front = rear = 0;
} else if (front == 0) {
front = MAX - 1;
} else {
front--;
}
deque[front] = value;
printf("Inserted %d at front.\n", value);
}
void insertRear(int value) {
if (isFull()) {
printf("Deque Overflow!\n");
return;
}
if (isEmpty()) {
front = rear = 0;
} else if (rear == MAX - 1) {
rear = 0;
} else {
rear++;
}
deque[rear] = value;
printf("Inserted %d at rear.\n", value);
}
void deleteFront() {
if (isEmpty()) {
printf("Deque Underflow!\n");
return;
}
printf("Deleted %d from front.\n", deque[front]);
if (front == rear) front = rear = -1;
else if (front == MAX - 1) front = 0;
else front++;
}
void deleteRear() {
if (isEmpty()) {
printf("Deque Underflow!\n");
return;
}
printf("Deleted %d from rear.\n", deque[rear]);
if (front == rear) front = rear = -1;
else if (rear == 0) rear = MAX - 1;
else rear--;
}
void display() {
if (isEmpty()) {
printf("Deque is empty!\n");
return;
}
printf("Deque elements: ");
int i = front;
while (1) {
printf("%d ", deque[i]);
if (i == rear) break;
i = (i + 1) % MAX;
}
printf("\n");
}
int main() {
int choice, value;
while (1) {
printf("\n---- DEQUE MENU ----\n");
printf("1. Insert Front\n");
printf("2. Insert Rear\n");
printf("3. Delete Front\n");
printf("4. Delete Rear\n");
printf("5. Display\n");
printf("6. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("Enter value: ");
scanf("%d", &value);
insertFront(value);
break;
case 2:
printf("Enter value: ");
scanf("%d", &value);
insertRear(value);
break;
case 3:
deleteFront();
break;
case 4:
deleteRear();
break;
case 5:
display();
break;
case 6:
printf("Exiting...\n");
exit(0);
default:
printf("Invalid choice! Try again.\n");
}
}
return 0;
}
Comments