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");
        }
    }
}