#include #define MAX 5 // Linear Queue variables int linearQueue[MAX]; int frontL = -1, rearL = -1; // Circular Queue variables int circularQueue[MAX]; int frontC = -1, rearC = -1; // linear queue functions int isLinearEmpty() { return (frontL == -1 && rearL == -1); } int isLinearFull() { return (rearL == MAX - 1); } void enqueueLinear(int value) { if (isLinearFull()) { printf("Linear Queue is full! Cannot insert %d\n", value); return; } if (isLinearEmpty()) { frontL = rearL = 0; } else { rearL++; } linearQueue[rearL] = value; printf("Inserted %d into Linear Queue\n", value); } void dequeueLinear() { if (isLinearEmpty()) { printf("Linear Queue is empty! Nothing to dequeue.\n"); return; } printf("Removed %d from Linear Queue\n", linearQueue[frontL]); if (frontL == rearL) { frontL = rearL = -1; } else { frontL++; } } void displayLinear() { if (isLinearEmpty()) { printf("Linear Queue is empty!\n"); return; } printf("Linear Queue elements: "); for (int i = frontL; i <= rearL; i++) { printf("%d ", linearQueue[i]); } printf("\n"); } //circular queue functions int isCircularEmpty() { return (frontC == -1); } int isCircularFull() { return ((rearC + 1) % MAX == frontC); } void enqueueCircular(int value) { if (isCircularFull()) { printf("Circular Queue is full! Cannot insert %d\n", value); return; } if (isCircularEmpty()) { frontC = rearC = 0; } else { rearC = (rearC + 1) % MAX; } circularQueue[rearC] = value; printf("Inserted %d into Circular Queue\n", value); } void dequeueCircular() { if (isCircularEmpty()) { printf("Circular Queue is empty! Nothing to dequeue.\n"); return; } printf("Removed %d from Circular Queue\n", circularQueue[frontC]); if (frontC == rearC) { frontC = rearC = -1; } else { frontC = (frontC + 1) % MAX; } } void displayCircular() { if (isCircularEmpty()) { printf("Circular Queue is empty!\n"); return; } printf("Circular Queue elements: "); int i = frontC; while (1) { printf("%d ", circularQueue[i]); if (i == rearC) break; i = (i + 1) % MAX; } printf("\n"); } // Main Program void linearQueueMenu() { int choice, value; while (1) { printf("\n--- Linear Queue Menu ---\n"); printf("1. Enqueue (Insert)\n"); printf("2. Dequeue (Remove)\n"); printf("3. Display Queue\n"); printf("4. Return to Main Menu\n"); printf("Enter your choice: "); scanf("%d", &choice); switch (choice) { case 1: printf("Enter value to insert: "); scanf("%d", &value); enqueueLinear(value); break; case 2: dequeueLinear(); break; case 3: displayLinear(); break; case 4: return; default: printf("Invalid choice! Try again.\n"); } } } void circularQueueMenu() { int choice, value; while (1) { printf("\n--- Circular Queue Menu ---\n"); printf("1. Enqueue (Insert)\n"); printf("2. Dequeue (Remove)\n"); printf("3. Display Queue\n"); printf("4. Return to Main Menu\n"); printf("Enter your choice: "); scanf("%d", &choice); switch (choice) { case 1: printf("Enter value to insert: "); scanf("%d", &value); enqueueCircular(value); break; case 2: dequeueCircular(); break; case 3: displayCircular(); break; case 4: return; default: printf("Invalid choice! Try again.\n"); } } } int main() { int mainChoice; while (1) { printf("\n---Main Menu---\n"); printf("1. Linear Queue Operations\n"); printf("2. Circular Queue Operations\n"); printf("3. Exit\n"); printf("Enter your choice: "); scanf("%d", &mainChoice); switch (mainChoice) { case 1: linearQueueMenu(); break; case 2: circularQueueMenu(); break; case 3: printf("Exiting program.\n"); return 0; default: printf("Invalid choice! Try again.\n"); } } }