Design your own linked list and member functions 1.) Design a simple linked list
ID: 3810896 • Letter: D
Question
Design your own linked list and member functions
1.) Design a simple linked list class with only two member functions and a default constructor:
void add(double x);
boolean isMember(double x);
LinkedList( );
The add function adds a new node containing x to the front (head) of the list, while the isMember function tests to see if the list contains a node with the value x. Test your linked list class by adding various numbers to the list and then testing for membership.
2.) List Copy Constructor
Add a copy constructor. Test your class by making a copy of a list and then testing membership on the copy.
3.) List Print
Add a print member function. Test the class by starting with an empty list, adding some elements, and then printing the resulting list out.
4.) List Member Deletion
Modify the list class you created in the previous programming challenges by adding a function to remove an item from the list, and by adding a destructor:
void remove(double x);
~LinkedList();
Test the class by adding by a sequence of instructions that mixes operations for adding items, removing items, and printing the list.
5.) List Reverse
Adding a member function for reversing the list:
void reverse();
The member function rearranges the nodes in the list so that their order is reversed. You should do this without creating or destroying nodes.
6.) List Search
Modify the list class include a member function
int search(double x)
that returns the position of a number x on the list. The rst node in the list is at position 0, the second node is at position 1, and so on. If x is not found on the list, the search would return -1. Test the new member function using an appropriate driver program.
Post the header file, and the source code. DO NOT FORGET THE COPY CONSTRUCTOR.
Explanation / Answer
PROGRAM CODE:
#include <iostream>
using namespace std;
struct Node
{
double data;
Node *next;
};
class LinkedList
{
private:
Node *front;
public:
LinkedList()
{
front = NULL;
}
LinkedList(LinkedList &list)
{
front = list.front;
}
void add(double x)
{
Node *newNode = new Node;
newNode->data = x;
newNode->next = NULL;
if(front == NULL)
front = newNode;
else
{
newNode->next = front;
front = newNode;
}
}
bool isMember(double x)
{
Node *temp = front;
while(temp != NULL)
{
if(temp->data == x)
{
return true;
}
temp = temp->next;
}
return false;
}
void print()
{
Node *temp = front;
while(temp != NULL)
{
cout<<temp->data<<" ";
temp = temp->next;
}
cout<<endl;
}
void remove(double x)
{
Node *temp = front;
Node *prev;
if(temp == NULL)
return;
else if(temp->data == x)
{
front = NULL;
return;
}
while(temp->next != NULL && temp !=NULL)
{
if(temp->data == x )
{
temp->data = temp->next->data;
temp->next = temp->next->next;
break;
}
prev = temp;
temp = temp->next;
}
if(temp->data == x)
prev->next = NULL;
}
~LinkedList()
{
delete front;
}
void reverse()
{
Node *temp1 = front;
Node *temp = NULL;
while(temp1 != NULL)
{
Node *newNode = new Node;
newNode->data = temp1->data;
newNode->next = temp;
temp = newNode;
temp1 = temp1->next;
}
front = NULL;
free(front);
front = temp;
}
int search(double x)
{
int count = 0;
Node *temp = front;
while(temp != NULL)
{
count++;
if(temp->data == x)
{
return count;
}
temp = temp->next;
}
return -1;
}
};
int main() {
LinkedList list;
list.add(1.0);
list.add(2.0);
list.add(3.0);
list.add(4.0);
list.add(5.0);
list.print();
list.remove(2.0);
list.print();
list.reverse();
list.print();
cout<<"Index of 5: "<<list.search(5.0)<<endl;
return 0;
}
OUTPUT:
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.