Code must be in C++!!! CODE MUST BE IN C++!!!!!!!! Answer with DList.C and DList
ID: 3797335 • Letter: C
Question
Code must be in C++!!!
CODE MUST BE IN C++!!!!!!!!
Answer with DList.C and DList.h
//Here is the main.C file
In this project, you are asked to design and implement a class for double link list to hold integers: The class should be called DList, you also need a class called Node that contains an int as the data Node needs the following data: int data //the data held by the node Node parent; //the parent of the Node Node* child; the child of the Node Node needs the following public functions Node (int) constructor to create a Node with the input int int GetData return the int held by the Node DList needs a head and tail, both should be pointers to Node, and initialized to NULL DList needs a default constructor (no parameter), a copy constructor (take const DList & as input) DList needs the following public functions: void Push Front (int a) //create a Node containing a //and add i to the front of the list void Push End (int a) //create a Node containing a and add it to the end of the list Node PopFront //popping out the first Node of the list, //if the list i s empty, return NULL Node* PopEnd //popping out the last Node of the list, //if the list is empty return NULL void Print ListForward //print every element from start to end //in one line separated by a space void Print ListReverse //print every element from end to start //in one line separated by a space 2 Files to turn in: You need to turn in four files in a targz file: makefile, main.C, DList.C, DList.h. Among them, you need to use the main. C provided from the class web site which you cannot modify at all. DList h declares the class DList and Node. You can make DList the friend of Node so it can access the private data of the Node.Explanation / Answer
#include <iostream>
using namespace std;
class Node
{
public :
int value;
Node *N,*P;
Node(int y)
{
value = y;
N = P = NULL;
}
int GetData(){
return value;
}
};
class DList
{
Node *front;
Node *back;
public:
DList()
{
front = NULL;
back = NULL;
}
~DList(){ destroyList();}
void PushFront(int x);
void PushEnd(int x);
Node* PopFront();
Node* PopEnd();
void PrintListForward();
void PrintListReverse();
void destroyList();
};
void DList::PushFront(int x)
{
Node *n = new Node(x);
if( front == NULL)
{
front = n;
back = n;
}
else
{
front->P = n;
n->N = front;
front = n;
}
}
Node* DList::PopFront()
{
Node *n = NULL;
if( front == NULL)
{
return NULL;
}
else if(front==back){
n = front;
back = NULL;
front = NULL;
}
else
{
n = front;
front = n->N;
front->P=NULL;
}
return n;
}
void DList::PushEnd(int x)
{
Node *n = new Node(x);
if( back == NULL)
{
front = n;
back = n;
}
else
{
back->N = n;
n->P = back;
back = n;
}
}
Node* DList::PopEnd()
{
Node *n = NULL;
if( back == NULL)
{
return NULL;
}
else if(back==front){
n = back;
back = NULL;
front = NULL;
}
else
{
n = back;
back = n->P;
back->N = NULL;
}
return n;
}
void DList::PrintListForward()
{
Node *temp = front;
cout << " Nodes in forward order:" << endl;
while(temp != NULL)
{
cout << temp->value << " " ;
temp = temp->N;
}
}
void DList::PrintListReverse()
{
Node *temp = back;
cout << " Nodes in reverse order :" << endl;
while(temp != NULL)
{
cout << temp->value << " " ;
temp = temp->P;
}
}
void DList::destroyList()
{
Node *T = back;
while(T != NULL)
{
Node *T2 = T;
T = T->P;
delete T2;
}
front = NULL;
back = NULL;
}
int main()
{
DList list;
int i;
//pust 10 numbers to the end
for (i = 0; i < 10; i++) list.PushEnd(i);
cout << "Print forward ";
list.PrintListForward();
cout << "Print reverse ";
list.PrintListReverse();
cout << "Pop front and print ";
//print the list from the beginning
Node* n = list.PopFront();
while ( n != NULL) {
cout << n->GetData() << endl;
delete n;
n = list.PopFront();
}
//pust 10 numbers to the front
for (i = 0; i < 10; i++) list.PushFront(i);
//test copy constructor
DList* list2 = new DList(list);
cout << "Pop end and print ";
//print the list from the end
n = list2->PopEnd();
while ( n != NULL) {
cout << n->GetData() << endl;
delete n;
n = list2->PopEnd();
}
delete list2;
return 0;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.