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