/* Implementing Circular Queue */
#include<iostream.h>
const int N=5;
void cqinsert(int q[],int x, int &f,int &r);
int cqdelete(int q[], int &f,int &r);
void cqlist(int q[],int f,int r);
void main()
{
int q[N],x,f=-1,r=-1,ch;
do
{
cout<<"\t\t\t1.Insertion\n";
cout<<"\t\t\t2.Deletion\n";
cout<<"\t\t\t3.List\n";
cout<<"\t\t\t4.Exit\n";
cout<<"Enter Your choice? ";
cin>>ch;
switch(ch)
{
case 1:
cout<<"\t\t\tInserting Element\n";
cout<<"Element to Insert? ";
cin>>x;
cqinsert(q,x,f,r);
break;
case 2:
cout<<"\t\t\tDeleting Element\n";
cout<<"Element Deleted:"<<cqdelete(q,f,r)<<"\n";
break;
case 3:
cout<<"\nList of Element";
cqlist(q,f,r);
break;
case 4:
break;
}}while(ch!=4);}
void cqinsert(int q[],int x, int &f,int &r)
{
if(r==N-1)
{
r=0;
}
else
{
r++;
}
if(f==r)
{
cout<<"\n Queue overflow \n";
if(r==0)
r=N-1;
else
r--;
return;
}
q[r]=x;
if(f<0)
f=0;
return;
}
int cqdelete(int q[], int &f,int &r)
{
int x;
if(f<0)
{
cout<<"\nQueue Underflow\n";
return -1;
}
x=q[f];
if(f==r)
{
f=r=-1;
return x;
}
if(f==N-1)
{
f=0;
}
else
{
f++;
}
return x;
}
void cqlist(int q[],int f,int r)
{
while(f>=0)
{
cout<<"\n"<<q[f];
if(f==r)
f=r=-1;
else
if(f==N-1)
f=0;
else
f++;
}
return;
}