Write Program In C Introduction In this project you are aske

Write Program In C++

Introduction In this project, you are asked to design and implement a class for double link list to hold integers:

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 needs the following public functions:

void PushFront(int a); //create a Node containing a //and add it to the front of the list

void PushEnd(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 is empty, return NULL

void PopEnd(); //popping out the last Node of the list, //if the list is empty, return NULL

DList & as input)

void PrintListForward(); //print every element from start to end //in one line separated by a space

void PrintListReverse(); //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 tar.gz file: makefile, main.C, DList.C, DList.h. Among them, you need to use the main.C provided 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.

3) Functions:

All member function and operator prototypes are declared in xArray.h, with necessary comments before each function. The following are major functions:

PushBack function is the core of this project, and should be used by other functions if necessary (for example, it can be used by the += and >> operators). This function put the integer at the end of the array. Since the array may not have enough space to hold it, you need to grow the array if necessary.

[ ] operator should check the boundary of data, if idx is not within the boundary, print error message and exit the program; otherwise, return data[idx];

>> operator should read in an integer and put it at the end of the array.

main.C File

Solution


#include<iostream>
#include<cstdio>
#include<cstdlib>

//Node Declaration

using namespace std;
struct node
{
int info;
struct node *next;
struct node *prev;
}*start;

class double_llist
{
public:
void create_list(int value);
void add_begin(int value);
void add_after(int value, int position);
void delete_element(int value);
void search_element(int value);
void display_dlist();
void count();
void reverse();
double_llist()
{
start = NULL;
}
};

/*
* Main: Conatins Menu
*/
int main()
{
int choice, element, position;
double_llist dl;
while (1)
{
cout<<endl<<\"----\"<<endl;
cout<<endl<<\"Operations on Doubly linked list\"<<endl;
cout<<endl<<\"----\"<<endl;   
cout<<\"a.Create Node\"<<endl;
cout<<\"b.Add at begining\"<<endl;
cout<<\"c.Add after position\"<<endl;
cout<<\"d.Delete\"<<endl;
cout<<\"e.Display\"<<endl;
cout<<\"f.Count\"<<endl;
cout<<\"g.Reverse\"<<endl;
cout<<\"h.Quit\"<<endl;
cout<<\"Enter your choice : \";
cin>>choice;
switch ( choice )
{
case A:
cout<<\"Enter the element: \";
cin>>element;
dl.create_list(element);
cout<<endl;
break;
case B:
cout<<\"Enter the element: \";
cin>>element;
dl.add_begin(element);
cout<<endl;
break;
case c:
cout<<\"Enter the element: \";
cin>>element;
cout<<\"Insert Element after postion: \";
cin>>position;
dl.add_after(element, position);
cout<<endl;
break;
case D:
if (start == NULL)
{
cout<<\"List empty,nothing to delete\"<<endl;   
break;
}
cout<<\"Enter the element for deletion: \";
cin>>element;
dl.delete_element(element);
cout<<endl;
break;
case E:
dl.display_dlist();
cout<<endl;
break;
case F:
dl.count();
break;
case G:
if (start == NULL)
{
cout<<\"List empty,nothing to reverse\"<<endl;
break;
}
dl.reverse();
cout<<endl;
break;
case H:
exit(1);
default:
cout<<\"Wrong choice\"<<endl;
}
}
return 0;
}

void double_llist::create_list(int value)
{
struct node *s, *temp;
temp = new(struct node);
temp->info = value;
temp->next = NULL;
if (start == NULL)
{
temp->prev = NULL;
start = temp;
}
else
{
s = start;
while (s->next != NULL)
s = s->next;
s->next = temp;
temp->prev = s;
}
}

void double_llist::add_begin(int value)
{
if (start == NULL)
{
cout<<\"1st Create the list.\"<<endl;
return;
}
struct node *temp;
temp = new(struct node);
temp->prev = NULL;
temp->info = value;
temp->next = start;
start->prev = temp;
start = temp;
cout<<\"Element Inserted\"<<endl;
}

void double_llist::add_after(int value, int pos)
{
if (start == NULL)
{
cout<<\"First Create the list.\"<<endl;
return;
}
struct node *tmp, *q;
int i;
q = start;
for (i = 0;i < pos - 1;i++)
{
q = q->next;
if (q == NULL)
{
cout<<\"There are less than \";
cout<<pos<<\" elements.\"<<endl;
return;
}
}
tmp = new(struct node);
tmp->info = value;
if (q->next == NULL)
{
q->next = tmp;
tmp->next = NULL;
tmp->prev = q;
}
else
{
tmp->next = q->next;
tmp->next->prev = tmp;
q->next = tmp;
tmp->prev = q;
}
cout<<\"Element Inserted\"<<endl;
}

/*
* Deletion of element from the list
*/
void double_llist::delete_element(int value)
{
struct node *tmp, *q;
/*first element deletion*/
if (start->info == value)
{
tmp = start;
start = start->next;
start->prev = NULL;
cout<<\"Element Deleted\"<<endl;
free(tmp);
return;
}
q = start;
while (q->next->next != NULL)
{   
/*Element deleted in between*/
if (q->next->info == value)
{
tmp = q->next;
q->next = tmp->next;
tmp->next->prev = q;
cout<<\"Element Deleted\"<<endl;
free(tmp);
return;
}
q = q->next;
}
/*last element deleted*/
if (q->next->info == value)
{   
tmp = q->next;
free(tmp);
q->next = NULL;
cout<<\"Element Deleted\"<<endl;
return;
}
cout<<\"Element \"<<value<<\" nt found\"<<endl;
}

void double_llist::display_dlist()
{
struct node *q;
if (start == NULL)
{
cout<<\"List empty,nothing to display\"<<endl;
return;
}
q = start;
cout<<\"The Doubly Link List is :\"<<endl;
while (q != NULL)
{
cout<<q->info<<\" <-> \";
q = q->next;
}
cout<<\"NULL\"<<endl;
}

void double_llist::count()
{   
struct node *q = start;
int cnt = 0;
while (q != NULL)
{
q = q->next;
cnt++;
}
cout<<\"Number of elements are: \"<<cnt<<endl;
}

void double_llist::reverse()
{
struct node *p1, *p2;
p1 = start;
p2 = p1->next;
p1->next = NULL;
p1->prev = p2;
while (p2 != NULL)
{
p2->prev = p2->next;
p2->next = p1;
p1 = p2;
p2 = p2->prev;
}
start = p1;
cout<<\"List Reversed\"<<endl;
}

Write Program In C++ Introduction In this project, you are asked to design and implement a class for double link list to hold integers: In this project, you are
Write Program In C++ Introduction In this project, you are asked to design and implement a class for double link list to hold integers: In this project, you are
Write Program In C++ Introduction In this project, you are asked to design and implement a class for double link list to hold integers: In this project, you are
Write Program In C++ Introduction In this project, you are asked to design and implement a class for double link list to hold integers: In this project, you are
Write Program In C++ Introduction In this project, you are asked to design and implement a class for double link list to hold integers: In this project, you are
Write Program In C++ Introduction In this project, you are asked to design and implement a class for double link list to hold integers: In this project, you are

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site