Hello friends!!!!!

Queue ADT using Arrays

#include <stdio.h>

#define MAX 100

typedef struct queue

{

int arr[MAX];

int front;

int rear;

}Queue;

void initialise(Queue *q)

{

q->front = -1;

q->rear = -1;

}

int isEmpty(Queue *q)

{

return q->front == -1;

}

int isFull(Queue *q) {

return q->rear == MAX - 1;

}

void Enqueue(Queue *q, int value)

{

if(isFull(q))

{

printf("Queue is full\n");

}

else if(q->front == -1)

{

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

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

}

else

{

q->arr[++q->rear] = value;

}

}

int Dequeue(Queue *q)

{

int value;

if (isEmpty(q))

{

printf("Queue is empty\n");

return -1;

}

else

{

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

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

{

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

}

else

{

q->front++;

}

return value;

}

}

int front_value(Queue *q)

{

if(isEmpty(q))

{

printf("Queue is empty\n");

return -1;

}

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

}

void display(Queue *q){

if(isEmpty(q))

{

printf("Queue is empty\n");

return ;

}

else {

printf("List of the Queue elements: \n");

for (int i = q->front; i <= q->rear; i++) {

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

}

printf("\n");

}

}

void main()

{

Queue queue;

initialise(&queue);

Enqueue(&queue, 10);

Enqueue(&queue, 20);

Enqueue(&queue, 30);

Enqueue(&queue, 40);

Enqueue(&queue, 50);

display(&queue);

Dequeue(&queue);

display(&queue);

printf("Front element: %d\n", front_value(&queue));

}