#include <stdio.h>
#define MAX 5 // queue size
int queue[MAX];
int front = -1, rear = -1;
/* ---------- ENQUEUE ---------- */
void enqueue(int item) {
if ((rear + 1) % MAX == front) {
printf("Queue Overflow! Cannot insert %d\n", item);
return;
}
if (front == -1) { // first insertion
front = 0;
rear = 0;
} else {
rear = (rear + 1) % MAX;
}
queue[rear] = item;
printf("Inserted %d\n", item);
}
/* ---------- DEQUEUE ---------- */
void dequeue() {
if (front == -1) {
printf("Queue Underflow! Nothing to delete\n");
return;
}
printf("Deleted %d\n", queue[front]);
if (front == rear) { // last element removed
front = -1;
rear = -1;
} else {
front = (front + 1) % MAX;
}
}
/* ---------- DISPLAY ---------- */
void display() {
int i;
if (front == -1) {
printf("Queue is empty\n");
return;
}
printf("Queue elements: ");
i = front;
while (1) {
printf("%d ", queue[i]);
if (i == rear)
break;
i = (i + 1) % MAX;
}
printf("\n");
}
/* ---------- MAIN (MENU) ---------- */
int main() {
int choice, item;
while (1) {
printf("\n--- CIRCULAR QUEUE MENU ---\n");
printf("1. Insert (Enqueue)\n");
printf("2. Delete (Dequeue)\n");
printf("3. Display Queue\n");
printf("4. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("Enter element to insert: ");
scanf("%d", &item);
enqueue(item);
break;
case 2:
dequeue();
break;
case 3:
display();
break;
case 4:
printf("Exiting program...\n");
return 0;
default:
printf("Invalid choice\n");
}
}
}