C++ implementation of a static deque class. “deque.h” provided below PROGRAMS: ~
ID: 3733471 • Letter: C
Question
C++ implementation of a static deque class.
“deque.h” provided below
PROGRAMS:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
deque.h
#ifndef _DEQUE_H_
#define _DEQUE_H_
#include
#include
#include "node2.h"
using namespace main_savitch_6B;
template
class deque
{
public:
typedef std::size_t size_type;
deque();
~deque();
deque(const deque& dq);
deque& operator = (const deque& dq);
T& front();
T front() const;
T& back();
T back() const;
void push_front (const T& entry);
void push_back (const T& entry);
void pop_front();
void pop_back();
size_type size() const;
bool empty() const;
template
friend bool operator == (const deque& dq1, const deque& dq2);
template
friend std::ostream& operator<< (std::ostream& out, const deque& dq);
private:
size_type count; // Total number of items in the queue
node* first;
node* last;
};
#include "deque.template"
#endif
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**** node2.h ****
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
node2.template
Explanation / Answer
Answer:
#include <iostream>
#include <cstdlib>
using namespace std;
struct node
{
int content;
node *later;
node *before;
}*top, *end;
class dqueue
{
public:
int top1, top2;
void push();
void remove();
void show();
dqueue()
{
top1 = 0;
top2 = 0;
top = NULL;
end = NULL;
}
};
int main()
{
int choice;
dqueue dl;
while (1)
{
cout<<"Operations on Deque"<<endl;
cout<<"1.push Element into the Deque"<<endl;
cout<<"2.remove Element from the Deque"<<endl;
cout<<"3.Traverse the Deque"<<endl;
cout<<"4.Quit"<<endl;
cout<<"Enter your Choice: ";
cin>>choice;
cout<<endl;
switch(choice)
{
case 1:
dl.push();
break;
case 2:
dl.remove();
break;
case 3:
dl.show();
break;
case 4:
exit(1);
break;
default:
cout<<"Wrong Choice"<<endl;
}
}
return 0;
}
void dqueue::push()
{
struct node *read;
int ch, value;
if (top1 + top2 >= 50)
{
cout<<"Dequeue Overflow"<<endl;
return;
}
if (top1 + top2 == 0)
{
cout<<"Enter the value to be pushed: ";
cin>>value;
top = new (struct node);
top->content = value;
top->later = NULL;
top->before = NULL;
end = top;
top1++;
cout<<"Element pushed into empty deque"<<endl;
}
else
{
while (1)
{
cout<<endl;
cout<<"1.push Element at first"<<endl;
cout<<"2.push Element at last"<<endl;
cout<<"3.Exit"<<endl;
cout<<endl;
cout<<"Enter Your Choice: ";
cin>>ch;
cout<<endl;
switch(ch)
{
case 1:
cout<<"Enter the value to be pushed: ";
cin>>value;
read = new (struct node);
read->content = value;
read->later = top;
read->before = NULL;
top->before = read;
top = read;
top1++;
break;
case 2:
cout<<"Enter the value to be pushed: ";
cin>>value;
read = new (struct node);
read->content = value;
read->later = NULL;
read->before = end;
end->later = read;
end = read;
top2++;
break;
case 3:
return;
break;
default:
cout<<"Wrong Choice"<<endl;
}
}
}
}
void dqueue::remove()
{
if (top1 + top2 <= 0)
{
cout<<"Deque Underflow"<<endl;
return;
}
int ch;
while (1)
{
cout<<endl;
cout<<"1.delete element at beginning"<<endl;
cout<<"2.remove element at end "<<endl;
cout<<"3.Exit"<<endl;
cout<<endl;
cout<<"Enter Your Choice: ";
cin>>ch;
cout<<endl;
switch(ch)
{
case 1:
top = top->later;
top->before = NULL;
top1--;
break;
case 2:
end = end->before;
end->later = NULL;
top2--;
break;
case 3:
return;
break;
default:
cout<<"Wrong Choice"<<endl;
}
}
}
void dqueue::show()
{
struct node *read;
int ch;
if (top1 + top2 <= 0)
{
cout<<"Deque Underflow"<<endl;
return;
}
while (1)
{
cout<<endl;
cout<<"1.show Deque from Beginning"<<endl;
cout<<"2.show Deque from End"<<endl;
cout<<"3.Exit"<<endl;
cout<<endl;
cout<<"Enter Your Choice: ";
cin>>ch;
cout<<endl;
switch (ch)
{
case 1:
read = top;
cout<<"Deque from Beginning:"<<endl;
while (read != NULL)
{
cout<<read->content<<" ";
read = read->later;
}
cout<<endl;
break;
case 2:
cout<<"Deque from End:"<<endl;
read = end;
while (read != NULL)
{
cout<<read->content<<" ";
read = read->before;
}
read = end;
cout<<endl;
break;
case 3:
return;
break;
default:
cout<<"Wrong Choice"<<endl;
}
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.