12: Problem Statement:
A double-ended queue(deque) is a linear list in which additions and deletions may be made at either end. Obtain a data representation mapping a deque into a one-dimensional array. Write C++ program to simulate deque with functions to add and delete elements from either end of the deque.
#include<iostream>
using namespace std;
class Deque{
public:
Deque();
void AddRight(int x);
void AddLeft(int x);
void DeleteLeft();
void DeleteRight();
void print();
private:
int x[20];
int front;
int rear;
};
Deque::Deque()
{
front=-1;
rear=-1;
}
void Deque::AddRight(int val)
{
if(front==-1 && rear==-1)
{
rear++;
x[rear]=val;
front=0;
}
else{
rear++;
x[rear]=val;
}
}
void Deque::AddLeft(int val)
{
if(front==-1 && rear==-1)
{
AddRight(val);
}
else{
rear++;
int a[rear]={0,};
for(int i=front;i<=rear;++i)
{
a[i+1]=x[i];
}
a[front]=val;
for(int i=0;i<=rear;++i)
{
x[i]=a[i];
}
}
}
void Deque::DeleteRight()
{
if(rear==-1)
{
cout<<"Underflow !, can,t delete more !\n";
front=-1;
return;
}
else{
int k=x[rear];
cout<<"Rear : "<<k<<endl;
rear--;
}
}
void Deque::DeleteLeft()
{
if(front==rear+1)
{
cout<<"Underflow !, can,t delete more !\n";
return;
}
else{
int k=x[front];
cout<<"Front : "<<k<<endl;
front++;
}
}
void Deque::print()
{
cout<<"Elements in Deque : ";
for(int i=front;i<=rear;++i)
{
cout<<x[i]<<" " ;
}
cout<<endl;
}
int main()
{
Deque d;
int ch;
int n;
do
{
cout<<"\n1.AddRight\n2.AddLeft\n3.DeleteRight\n4.DeleteLeft\n5.print\n6.Exit\n";
cout<<"Enter your choice :" ;
cin>>ch;
switch(ch)
{
case 1:
cout<<"Enter number ?";
cin>>n;
d.AddRight(n);
break;
case 2:
cout<<"Enter number ?";
cin>>n;
d.AddLeft(n);
break;
case 3:
d.DeleteRight();
break;
case 4:
d.DeleteLeft();
break;
case 5:
d.print();
break;
}
}
while(ch!=6);
}
A double-ended queue(deque) is a linear list in which additions and deletions may be made at either end. Obtain a data representation mapping a deque into a one-dimensional array. Write C++ program to simulate deque with functions to add and delete elements from either end of the deque.
#include<iostream>
using namespace std;
class Deque{
public:
Deque();
void AddRight(int x);
void AddLeft(int x);
void DeleteLeft();
void DeleteRight();
void print();
private:
int x[20];
int front;
int rear;
};
Deque::Deque()
{
front=-1;
rear=-1;
}
void Deque::AddRight(int val)
{
if(front==-1 && rear==-1)
{
rear++;
x[rear]=val;
front=0;
}
else{
rear++;
x[rear]=val;
}
}
void Deque::AddLeft(int val)
{
if(front==-1 && rear==-1)
{
AddRight(val);
}
else{
rear++;
int a[rear]={0,};
for(int i=front;i<=rear;++i)
{
a[i+1]=x[i];
}
a[front]=val;
for(int i=0;i<=rear;++i)
{
x[i]=a[i];
}
}
}
void Deque::DeleteRight()
{
if(rear==-1)
{
cout<<"Underflow !, can,t delete more !\n";
front=-1;
return;
}
else{
int k=x[rear];
cout<<"Rear : "<<k<<endl;
rear--;
}
}
void Deque::DeleteLeft()
{
if(front==rear+1)
{
cout<<"Underflow !, can,t delete more !\n";
return;
}
else{
int k=x[front];
cout<<"Front : "<<k<<endl;
front++;
}
}
void Deque::print()
{
cout<<"Elements in Deque : ";
for(int i=front;i<=rear;++i)
{
cout<<x[i]<<" " ;
}
cout<<endl;
}
int main()
{
Deque d;
int ch;
int n;
do
{
cout<<"\n1.AddRight\n2.AddLeft\n3.DeleteRight\n4.DeleteLeft\n5.print\n6.Exit\n";
cout<<"Enter your choice :" ;
cin>>ch;
switch(ch)
{
case 1:
cout<<"Enter number ?";
cin>>n;
d.AddRight(n);
break;
case 2:
cout<<"Enter number ?";
cin>>n;
d.AddLeft(n);
break;
case 3:
d.DeleteRight();
break;
case 4:
d.DeleteLeft();
break;
case 5:
d.print();
break;
}
}
while(ch!=6);
}
Comments
Post a Comment