Circular queue implementation

#include
#define max 5
struct queue
{
int data[max],front,rear;
};
struct queue q;
int isfull()
{
if((q.rear+2)%max==q.front)
return 1;
else
return 0;
}
int isempty()
{
if ((q.rear+1)%max==q.front)
return 1;
else
return 0;
}
void enqueue()
{
int val;
if (isfull())
printf("\nQueue is full!");
else
{
printf("\nEnter the value : ");
scanf("%d",&val);
q.rear=(q.rear+1)%max;
q.data[q.rear]=val;
}
}
int dequeue()
{
int x;
if (isempty())
printf("\nQueue is empty!");
else
{
x=q.data[q.front];
q.front=(q.front+1)%max;
return x;
}
}
void display()
{
int i;
if (isempty())
printf("\nQueue is empty!");
else
{
printf("\nThe elements in the queue are...");
for(i=q.front;i!=q.rear;i=(i+1)%max)
printf("\n%d",q.data[i]);
printf("\n%d",q.data[q.rear]);
}
}
main()
{
q.rear=-1;
q.front=0;
int choice;
int isfull();
int isempty();
int dequeue();
void enqueue();
void display();
printf("\n1-Insert 2-Delete 3-Display 4-Exit");
do
{
printf("\nEnter your choice : ");
scanf("%d",&choice);
switch(choice)
{
case 1: enqueue(); break;
case 2: printf("The deleted element is %d",dequeue()); break;
case 3: display(); break;
}
}while(choice!=4);
}

No comments: