Question: ANSWER ASAP Question 1 - 35 pts) Design and implement an algorithm to delete all the duplicate elements in a List ADT implemented as

 \ ANSWER ASAP Question 1 - 35 pts) Design and implement

an algorithm to delete all the duplicate elements in a List ADTimplemented as a singly linked list. You are given the code forthe singly linked list-based implementation of a List ADT. The main functionin this program is already setup to generate random integers and fill\

ANSWER ASAP

Question 1 - 35 pts) Design and implement an algorithm to delete all the duplicate elements in a List ADT implemented as a singly linked list. You are given the code for the singly linked list-based implementation of a List ADT. The main function in this program is already setup to generate random integers and fill up the contents of the list (IntegerList). The delete DuplicateElements() function is called on the IntegerList to delete the duplicate occurrences of all the elements in the list. Your task is to implement the delete DuplicateElements() function in the singly linked list-based implementation of the List ADT. Your algorithm/implementation should run in time less than or equal to ncomparisons (which is the basic operation), where n is the number of elements in the list before the deletions. The main function is written in such a way that it will print the contents of the list before and after the deletions. You would test your code by entering 15 as the list size and 5 as the maximum value for any element. The list will be then filled with random integers in the range [1...5]. As there are going to be 15 integers in the list, it will be definitely the case that there will be more than one occurrence for one or more integers in the list. A sample output is shown below: Enter the maximum value in the list: 5 Enter the size for the list: 15 Before deletion: 53253221155 4315 After deletion: 5 3 214 #include #include #include #include #include #include using namespace std; 1/ implementing the dynamic List ADT using Linked List class Node { private: int data; Node* nextNodePtr; public: Node() { } void setData(int d) { data -d; } int getData() { return data; } void setNextNodePtr(Node* nodePtr) { nextNodePtr = nodePtr; } Node* getNextNodePtr() { return nextNodePtr; }; class List private: Node *headPtr; public: List() { headPtr = new Node(); headPtr->setNextNodePtr(0); } Node* getHeadPtr() { return headPtr; 3 bool is Empty() { if (headPtr->getNextNodePtr() == 0) return true; return false; } void insert(int data) { Node* currentNodePtr - headPtr->getNextNodePtr(); Node* prevNodePtr - headPtr; while (currentNodePtr != 0){ prevNodePtr = currentNodePtr; currentNodePtr = currentNodePtr->getNextNodePtr(); } Node* newNodePtr = new Node(); newNodePtr->setData(data); newNodePtr->setNextNodePtr(0); prevNodePtr->setNextNodePtr(newNodePtr); } void insertAtIndex(int insertIndex, int data) { Node* currentNodePtr = headPtr->getNextNodePtr(); Node* prevNodePtr = headPtr; int index = 0; while (currentNodePtr != 0){ if (index == insert Index) break; prevNodePtr = currentNodePtr; currentNodePtr = currentNodePtr->getNextNodePtr(); index++; } Node* newNodePtr = new Node(); newNodePtr->setData(data); newNodePtr->setNextNodePtr (currentNodePtr); prevNodePtr->setNextNodePtr(newNodePtr); } int read (int readIndex) { Node* currentNodePtr = headPtr->getNextNodePtr(); Node* prevNodePtr - headPtr; int index = 0; while (currentNodePtr != 0){ if (index == readIndex) return currentNodePtr->getData(); prevNodePtr = currentNodePtr; currentNodePtr = currentNodePtr->getNextNodePtr(); index++; } return -1; // an invalid value indicating // index is out of range } void modifyElement(int modifyIndex, int data) { Node* currentNodePtr = headPtr->getNextNodePtr(); Node* prevNodePtr - headPtr; int index = 0; while (currentNodePtr != 0) { if (index == modifyIndex) { currentNodePtr->setData(data); return; } prevNodePtr = currentNodePtr; currentNodePtr = currentNodePtr->getNextNodePtr(); index++; } } void deleteElement(int deleteIndex) { Node* currentNodePtr = headPtr->getNextNodePtr(); Node* prevNodePtr = headPtr; Node* nextNodePtr = headPtr; int index = 0; while (currentNodePtr != 0){ if (index == deleteIndex) { nextNodePtr = currentNodePtr->getNextNodePtr(); break; } prevNodePtr = currentNodePtr; currentNodePtr = currentNodePtr->getNextNodePtr(); index++; } prevNodePtr->setNextNodePtr(nextNodePtr); void deleteDuplicateElements() { } void IterativePrint() { Node* currentNodePtr = headPtr->getNextNodePtr(); while (currentNodePtr != 0){ cout getData() getNextNodePtr(); } cout > maxValue; int listSize; cout > listSize; //srand(time(NULL)); srand( static_cast(time(nullptr))); using namespace std::chrono; List IntegerList; //high_resolution_clock::time_point ti = high_resolution_clock::now(); for (int i = 0; i

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!