Program to implement a dequeue using circular array .
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
const int MAX=10;
class queue
{private:
int
arr[MAX];
int
front,rear;
public:
queue(void);
void
addrear(int);
void
addfront(int);
int
delrear(void);
int
delfront(void);
void
display(void);
int
count(void);
};
queue::queue(void)
{ front=rear=-1;}
void queue::addfront(int
item)
{ if((front==rear+1)||(front==1 &&
rear==MAX-1)||(rear==front-1))
{ cout<<"\n Queue is
full";
return;
}
if(front==-1)
front=rear=0;
else
if(front==0)
front=MAX-1;
else
front--;
arr[front]=item;
}
void queue::addrear(int item)
{ if((front==rear+1)||(front==1 && rear==MAX-1))
{ cout<<"\nQueue is full";
return;
}
if(front==-1)
front=rear=0;
else
if(rear==MAX-1)
rear=0;
else
rear++;
arr[rear]=item;
}
int queue::delfront(void)
{ int data;
if(front==-1)
{ cout<<"\nQueue is
empty";
return
NULL;
}
data=arr[front];
if(front==rear)
front=rear=-1;
else
if(front==MAX-1)
front=0;
else
front++;
return
data;
}
int queue::delrear(void)
{ int data;
if(front==-1)
{ cout<<"\nQueue is
empty";
return
NULL;
}
data=arr[rear];
if(front==rear)
front=rear=-1;
else
if(rear==0)
rear=MAX-1;
else
rear--;
return
data;
}
void queue::display(void)
{ cout<<"(Front)";
int
i=front;
if(i!=-1)
{while(1)
{ cout<<arr[i]<<"
";
if(i==rear)break;
if(i==MAX-1)
i=0;
else
i++;
}
}
cout<<"(Rear)";
}
int queue::count(void)
{ int count=0;
int
i=front;
if(i!=-1)
{while(1)
{ count++;
if(i==rear)
break;
if(i==MAX-1)
i=0;
else
i++;
}
}
return(count);
}
void main(void)
{ int c,num;
char
ch;
queue
q;
while(1)
{ clrscr();
cout<<"Perform
the following operations in Dqueue"<<endl;
cout<<"------------------------------------------"<<endl;
cout<<"1.Insert
elements at Front of Dqueue \n";
cout<<"2.Insert
elements at Rear of Dqueue \n";
cout<<"3.Delete
elements from Front of Dqueue \n";
cout<<"4.Delete
elements from Rear of Dqueue \n";
cout<<"5.Display
full content of Dqueue \n";
cout<<"6.Exit
from Program \n";
do
{ cout<<"Select your
choice(1:6)";
cin>>c;
}
while((c<1)||(c>6));
if(c==6)exit(1);
clrscr();
switch(c)
{case
1:
do
{ cout<<"Queue
currently has"<<q.count()<<"
elements"<<endl;
cout<<"Enter
the new element:";
cin>>num;
q.addfront(num);
cout<<"Add
more(Y/N):";
cin>>ch;
}
while((ch=='y')||(ch=='Y'));
break;
case
2:
do
{ cout<<"Queue
currently has"<<q.count()<<" elements"<<endl;
cout<<"Enter
the new element:";
cin>>num;
q.addrear(num);
cout<<"Add
more(Y/N):";
cin>>ch;
}
while((ch=='y')||(ch=='Y'));
break;
case
3:
do
{ cout<<"Queue
currently has"<<q.count()<<" elements"<<endl;
if((num=q.delfront())!=NULL)
cout<<"The
deleted element is:"<<num<<endl;
cout<<"Current
Queue is ";
q.display();
cout<<"Delete
more(Y/N):";
cin>>ch;
}
while((ch=='y')||(ch=='Y'));
break;
case
4:
do
{ cout<<"Queue
currently has"<<q.count()<<" elements"<<endl;
if((num=q.delrear())!=NULL)
cout<<"The
deleted element is:"<<num<<endl;
cout<<"Current
Queue is ";
q.display();
cout<<"Delete
more(Y/N):";
cin>>ch;
}
while((ch=='y')||(ch=='Y'));
break;
case
5:
cout<<"Queue
currently has "<<q.count()<<" elements as shown
below"<<endl;
q.display();
break;
}
cout<<endl<<"Press any key to
continue...";
getch();
}
}
No comments:
Post a Comment