Hello friends!!!!!

Circular Queue Using Arrays

#include <stdio.h>

#include <stdlib.h>

#define MAX 5

typedef struct CircularQueue

{

int arr[MAX];

int front;

int rear;

}CQueue;

void initialise(CQueue *q)

{

q->front = q->rear = -1;

}

//Function to chek whether the Queue is Empty

int isEmpty(CQueue *q)

{

return q->front == -1;

}

//Function to check whether the Queue is Full or not

int isFull(CQueue *q)

{

return (q->rear + 1) % MAX == q->front;

}

void Enqueue(CQueue *q, int val)

{

if(isFull(q))

{

printf("Queue is full, cannot enqueue %d\n", val);

}

else

{

if(isEmpty(q))

{

q->front = q->rear = 0;

}

q->rear = (q->rear + 1) % MAX;

q->arr[q->rear] = val;

printf("%d is Enqueued into the Queue\n", val);

}

}

int Dequeue(CQueue *q)

{

int del_value;

if(isEmpty(q))

{

printf("Queue is empty, cannot dequeue\n");

return -1;

}

else

{

del_value = q->arr[q->front];

if(q->front == q->rear)

{

q->front = q->rear = -1;

}

else

{

q->front = (q->front + 1) % MAX;

}

return del_value;

}

}

int front_value(CQueue *q)

{

if (isEmpty(q)) {

printf("Queue is empty\n");

return -1;

}

return q->arr[q->front];

}

// Function to display the elements in the queue

void display(CQueue *q)

{

int i;

if(isEmpty(q))

{

printf("Queue is empty\n");

return;

}

else{

printf("Queue elements: ");

i = q->front;

while(i != q->rear)

{

printf("%d ", q->arr[i]);

i = (i + 1) % MAX;

}

printf("%d ", q->arr[q->rear]);

printf("\n");

}

}

void main()

{

CQueue queue;

initialise(&queue);

Enqueue(&queue, 10);

Enqueue(&queue, 20);

Enqueue(&queue, 30);

Enqueue(&queue, 40);

Enqueue(&queue, 50);

display(&queue);

Dequeue(&queue);

display(&queue);

}