Friday, October 19, 2007

5.circular queue

/*circular queue*/
#include<iostream.h>
#include<conio.h>
#include<process.h>
#define null 0
#define mxs 5
template<class t>
class cq
{
int cnt,front,rear;
t *q;
public:cq(){front=rear=0;cnt=0;}
void addcq(t ele)
{
int t1;
t1=(rear+1)%mxs;
if(t1==front)
{cout<<"q is full";return;}
else{rear=t1;q[rear]=ele;}
}
void delcq()
{if(rear==front)
{cout<<"q is empty";return;
}
elsefront=(front+1)%mxs;
cout<<"removed ele:"<<q[front];
}
void display()
{cout<<"the circular q elements";
if(rear>front)
{
for(int i=front+1;i<=rear;i++)
cout<<q[i]<<" ";
}
else
{
for(int i=front+1;i<=mxs;i++)
cout<<q[i]<<" ";
for(i=0;i<=rear;i++)
cout<<q[i]<<" ";
}
}
};
void main()
{
cq<int>x;
int ele,ch;
while(1)
{
clrscr();
cout<<"***main menu***";
cout<<"\n1.insert\n2.delete\n3.display\n4.exit\n";
cout<<"enter u r choice";
cin>>ch;
switch(ch)
{
case 1:cout<<"enter new ele";
cin>>ele;
x.addcq(ele);
break;
case 2:x.delcq();
break;
case 3:x.display();
break;
case 4:exit(1);
break;
}
getch();
}
}

No comments: