could you please use c++
this is the ref.code
In this programming assignment, you will implement a type of List ADT called the Sorted List. A Sorted List will store its elements in the sorted order. That means, every element that is inserted into the list should be inserted at an appropriate location such that the list (which was sorted before the insertion) will also stay sorted after the insertion. Each insertion operation should take at most linear time (i.e., O(n) time, where n is the number of elements already in the list). You are given the code for implementing a Sorted List using a singly linked list. The main function in the code is already written for you to create a list, generate random numbers and insert them to the list as well as the timers are setup to measure the time to insert. As you can notice in the 'for' loop of the main function, the insertSortedOrder(...) function is called on to insert every random integer in the sorted order in the list (i.e., the list should remain sorted after each insertion). Your main task in this assignment is to implement the insertSorted Order(...) function to keep the singly linked list stay sorted after each insertion. Following is an example illustration: Contents of the Sorted List after the Insertion Initialization {ll empty Insert 10 Insert 3 310 Insert 5 3 5 10 Insert 12 3 5 10 12 Insert 7 3 5 7 10 12 Insert 2 2 3 5 7 10 12 Insert 8 2 3 5 7 8 10 12 You would run your code with list size values of 1000, 10000 and 100000, with a maximum value of 50000 for any integer in the list for each case. The code will print the average time per insertion in milli seconds. You would then plot the results in Excel, fit the data points to a polynomial (power function) and determine the empirical relationship between run time and list size: i.e., the run time as a polynomial function of the list size, 10 #include
#include #include #include #include #include int getData() return data; > void setNextNodePtr (Node nodeptr) nextNodePtr- node Ptr; > Node. getNextNodePtr return nextNodePtr; > ) class List private: Node "headptr: publie: List headPtr = new Node(); headPtr- >setNextNodePtr (0) > Node. getHeadPtr return headptr: } bool isEmpty 4 if (headPtr- >getNextNodePtr()** 0) return true; return false; > void insert(int data Node currentNodePtr- headPtr->get.NextNodePtr(); Node prevodePtr headptr; while (currentNodePtr - 0) { (currentNodePtr->getData() - data) return; previodePtr- currentNodePtr; currentNodePtr - currentNodePtr->getNextNodePt(): Node. newtodePtr new newlodePtr- >setData(data): newlodePtr- >setNextNodePtr (o): prevodePtr- >setNextNodePtr (newstodeper); Node(); void insertSortedorder (int data) // Implement the function // the data should get inserted at an appropriate index/location in the list // such that the list stays sorted after the insertion void insertat Indexfint insertIndex, int data) { Node currentNoder- headpur->getNext.NodePtu) Node. prevodePtr- headptr: int index = 0; while (currentNodePtr 1 = 0){ if (currentNodePtr->getData() == data) return; if (index - insert Index) break; currentNodePtr; prevNodePtr- currentNode Ptr - currentNodePtr->get NextNodePtr(); index. Node newlodetr - new Node(); newNodePtr- >setData(data); newNodePtr- >set NextNodePtr (currentNodePtr); >setNextNodePtr(newlodeptr); prevodePtr- int read int readIndex) { Node* currentNodePtr- headPtr->getNext.NodePtr(); Node prevNodePtr- headPtr; int index = 0; while (currentNodePtr I= 0) { if (index readIndex) return currentNodePtr->getData(); prev NodePtr- currentNodePtr; currentNodePtr = currentNodePtr->getNextNodePt(); index++; > return -1; // an invalid value indicating // index is out of range > void modifyElement(int modifyIndex, int data) { Node* currentNodePtr- headPtr->getNextNodePtr(); Node* prev Node Ptr- headptr: int index = 0; coutgetData() getNextNodePtr(); > cout > maxValue: int listSize; cout > listSize: 1/srand(time(NULL)); srand( static_cast unsigned int> (time(nullptr)))) using namespace std::chrono; List IntegerList; high-resolution_clock :time_point ti high_resolution_clock now(); for (int i - 0; i high_resolution_clock::time_point t2 - high_resolution_clocksnow(); duration double, std::milli> insertionTime_milli- t2 - tl; double insertionTime insertion Time_milli.count(); // Integerlist.IterativePrint(); cout