queues can implemented in various ways
now we will discuss the implementation of queue with the help of dynamic array
#include<stdio.h>
struct queue1
{
int *m;
int size;
int front;
int rear;
};
typedef struct queue1 queue;
void insertion(queue *q1,int value)
{
if(q1->front == -1)
{
q1->front++;
q1->m[++q1->rear]=value;
}
else if(q1->rear == q1->size-1)
{
printf("the queue is already full ");
}
else
{
q1->m[++q1->rear]=value;
}
}
int deletion(queue* q1)
{
if(q1->front == -1)
{
printf ("the queue is already empty");
}
if (q1->rear == 1 )
{
q1->rear = -1;
q1->front = -1;
}
else
{
int i = q1->front ;
for (i=q1->front ; i<q1->rear; i++)
{
q1->m[i]=q1->m[i+1];
}
q1->rear--;
return q1->m[q1->rear+1];
}
}
void print (queue *q1)
{
int i= q1->front;
if (q1->front != -1)
{
for(i=q1->front;i<=q1->rear;i++)
{
printf("%d \n",q1->m[i]);
}
printf("end");}
}
void main()
{
queue q1;
printf("enter the size of the array");
scanf("%d",&q1.size);
q1.m= (int *)malloc(sizeof(int)*q1.size);
q1.front = -1;
q1.rear = -1;
insertion(&q1,10);
insertion(&q1,11);
insertion(&q1,15);
insertion(&q1,7);
print(&q1);
int a =deletion(&q1);
print(&q1);
}