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