queue cl
🧩 Syntax:
#include <stdio.h>
#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");
}
}
}