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
Post a Comment