C program to convert an array into a circular queue
PROGRAM:
#include<stdio.h>void insert(int [], int *,int *,int);
void delet(int [], int *,int *,int);
void disp(int [], int *,int *,int);
int main()
{
int size=5,choice;
int q[5];
int f=0,r=-1,count=0;
for(;;)
{
printf("Enter your choice\n");
printf("Enter 1 to insert\n");
printf("Enter 2 to delete\n");
printf("Enter 3 to disp\n");
printf("Enter 0 to exit\n");
scanf("%d",&choice);
switch(choice)
{
case 1: insert(q,&r,&count,size);
break;
case 2: delet(q,&f,&count,size);
break;
case 3: disp(q,&f,&count,size);
break;
case 0: return 0;
break;
default:printf("Invalid entry\n");
}
}
}
//function to insert element into queue
void insert(int q[], int *r,int *count,int size)
{
int elem;
if(*count==size)
printf("Insert not possible, Queue is Full!\n");
else
{
*r=(*r+1)%size;
printf("Enter an element\n");
scanf("%d",&elem);
q[*r]=elem;
*count=*count+1;
}
}
//function to delete element from queue
void delet(int q[], int *f,int *count,int size)
{
if(*count==0)
printf("Delete not possible, Queue empty!\n");
else
{
printf("Element deleted is %d\n",q[*f]);
*f=(*f+1)%size;
*count=*count-1;
}
}
//function to display elements in a queue
void disp(int q[], int *f,int *count,int size)
{
int i,f1;
f1=*f;
if(*count==0)
printf("Display not possible, Queue empty!\n");
else
{
printf("Displaying Queue:\n");
for(i=0;i<*count;i++)
{
printf("%d\t",q[f1]);
f1=(f1+1)%size;
}
printf("\n");
}
}
OUTPUT:
Enter your choiceEnter 1 to insert
Enter 2 to delete
Enter 3 to disp
Enter 0 to exit
5
Invalid entry
Enter your choice
Enter 1 to insert
Enter 2 to delete
Enter 3 to disp
Enter 0 to exit
2
Delete not possible, Queue empty!
Enter your choice
Enter 1 to insert
Enter 2 to delete
Enter 3 to disp
Enter 0 to exit
3
Display not possible, Queue empty!
Enter your choice
Enter 1 to insert
Enter 2 to delete
Enter 3 to disp
Enter 0 to exit
1
Enter an element
10
Enter your choice
Enter 1 to insert
Enter 2 to delete
Enter 3 to disp
Enter 0 to exit
1
Enter an element
20
Enter your choice
Enter 1 to insert
Enter 2 to delete
Enter 3 to disp
Enter 0 to exit
1
Enter an element
30
Enter your choice
Enter 1 to insert
Enter 2 to delete
Enter 3 to disp
Enter 0 to exit
3
Displaying Queue:
10 20 30
Enter your choice
Enter 1 to insert
Enter 2 to delete
Enter 3 to disp
Enter 0 to exit
1
Enter an element
40
Enter your choice
Enter 1 to insert
Enter 2 to delete
Enter 3 to disp
Enter 0 to exit
1
Enter an element
50
Enter your choice
Enter 1 to insert
Enter 2 to delete
Enter 3 to disp
Enter 0 to exit
1
Insert not possible, Queue is Full!
Enter your choice
Enter 1 to insert
Enter 2 to delete
Enter 3 to disp
Enter 0 to exit
3
Displaying Queue:
10 20 30 40 50
Enter your choice
Enter 1 to insert
Enter 2 to delete
Enter 3 to disp
Enter 0 to exit
2
Element deleted is 10
Enter your choice
Enter 1 to insert
Enter 2 to delete
Enter 3 to disp
Enter 0 to exit
2
Element deleted is 20
Enter your choice
Enter 1 to insert
Enter 2 to delete
Enter 3 to disp
Enter 0 to exit
1
Enter an element
60
Enter your choice
Enter 1 to insert
Enter 2 to delete
Enter 3 to disp
Enter 0 to exit
1
Enter an element
70
Enter your choice
Enter 1 to insert
Enter 2 to delete
Enter 3 to disp
Enter 0 to exit
1
Insert not possible, Queue is Full!
Enter your choice
Enter 1 to insert
Enter 2 to delete
Enter 3 to disp
Enter 0 to exit
3
Displaying Queue:
30 40 50 60 70
Enter your choice
Enter 1 to insert
Enter 2 to delete
Enter 3 to disp
Enter 0 to exit
0