DSA Lab 13 Program

 Program for dynamic implementation of queue.


#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10

struct Queue {
    int queue[MAX_SIZE];
    int front;
    int rear;
};

int isEmpty(struct Queue *q) {
    return (q->front == -1);
}

int isFull(struct Queue *q) {
    return (q->rear == MAX_SIZE - 1);
}

void enqueue(struct Queue *q, int data) {
    if (isFull(q)) {
        printf("Queue is full\n");
        return;
    }
    if (isEmpty(q)) {
        q->front = 0;
    }
    q->rear++;
    q->queue[q->rear] = data;
    printf("Enqueued %d in queue\n", data);
}

int dequeue(struct Queue *q) {
    if (isEmpty(q)) {
        printf("Queue is empty\n");
        return -1;
    }
    int data = q->queue[q->front];
    if (q->front == q->rear) {
        q->front = -1;
        q->rear = -1;
    } else {
        q->front++;
    }
    printf("Dequeued %d from queue\n", data);
    return data;
}

void displayQueue(struct Queue *q) {
    if (isEmpty(q)) {
        printf("Queue is empty\n");
        return;
    }
    for (int i = q->front; i <= q->rear; i++) {
        printf("%d -> ", q->queue[i]);
    }
    printf("NULL\n");
}

int main() {
    struct Queue *q = malloc(MAX_SIZE * sizeof(struct  Queue));
    q->front = -1;
    q->rear = -1;
    enqueue(q, 10);
    enqueue(q, 20);
    enqueue(q, 30);
    printf("Queue: ");
    displayQueue(q);
    dequeue(q);
    printf("Queue after dequeue: ");
    displayQueue(q);
    return 0;
}
#Output Enqueued 10 in queue Enqueued 20 in queue Enqueued 30 in queue Queue: 10 -> 20 -> 30 -> NULL Dequeued 10 from queue Queue after dequeue: 20 -> 30 -> NULL

Comments

Popular posts from this blog

Keyword , Identifier, Indentation, Comments & Documentation

DSA Lab 8 program

DSA Lab 7 Program