Sunday, 5 October 2025

Queue 7


7a
#include 
#include 

#define MAX_SIZE 5

int queue[MAX_SIZE];
int front = -1;
int rear = -1;

int isEmpty() {
    return front == -1;
}

int isFull() {
    return rear == MAX_SIZE - 1;
}

void enqueue(int data) {
    if (isFull()) {
        printf("Queue Full.\n");
        return;
    }
    if (isEmpty()) {
        front = 0;
    }
    queue[++rear] = data;
}

int dequeue() {
    if (isEmpty()) {
        printf("Queue Empty.\n");
        return -1;
    }
    int data = queue[front];
    if (front == rear) {
        front = -1;
        rear = -1;
    } else {
        front++;
    }
    return data;
}

int peek() {
    if (isEmpty()) {
        printf("Queue Empty.\n");
        return -1;
    }
    return queue[front];
}

int main() {
    enqueue(10);
    enqueue(20);
    enqueue(30);
    enqueue(40);
    enqueue(50);

    if (isFull()) printf("Is Full.\n");

    enqueue(60);

    printf("Front: %d\n", peek());

    printf("Dequeued: %d\n", dequeue());
    printf("Dequeued: %d\n", dequeue());

    printf("Front: %d\n", peek());

    if (!isEmpty()) printf("Not Empty.\n");

    return 0;
}
  
  
7b
#include 
#include 

struct Node {
    int data;
    struct Node* next;
};

struct Node* front = NULL;
struct Node* rear = NULL;

int isEmpty() {
    return front == NULL;
}

void enqueue(int data) {
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
    if (newNode == NULL) return;
    newNode->data = data;
    newNode->next = NULL;

    if (isEmpty()) {
        front = newNode;
        rear = newNode;
    } else {
        rear->next = newNode;
        rear = newNode;
    }
}

int dequeue() {
    if (isEmpty()) {
        printf("Queue Empty.\n");
        return -1;
    }
    struct Node* temp = front;
    int data = temp->data;

    front = front->next;

    if (front == NULL) {
        rear = NULL;
    }
    free(temp);
    return data;
}

int peek() {
    if (isEmpty()) {
        printf("Queue Empty.\n");
        return -1;
    }
    return front->data;
}

int main() {
    enqueue(100);
    enqueue(200);
    enqueue(300);

    printf("Front: %d\n", peek());

    printf("Dequeued: %d\n", dequeue());
    printf("Dequeued: %d\n", dequeue());

    printf("Front: %d\n", peek());

    if (!isEmpty()) printf("Not Empty.\n");

    printf("Dequeued: %d\n", dequeue());

    if (isEmpty()) printf("Is Empty.\n");

    return 0;
}

No comments:

Post a Comment