Question: DATA STRUCTURES AND ALGORITHMS SHOW ALL i did #include #include #include #include #include #include using namespace std; ; 1/ implementing the dynamic List ADT using

DATA STRUCTURES AND ALGORITHMS SHOW ALL i did #include #include #include #include#include #include using namespace std; ; 1/ implementing the dynamic List ADTusing array 1/ operations to be implemented: read, Modify, delete, isEmpty, insert,countElements class List private: int array: int maxSize; // useful to decideif resizing (doubling the array size) is needed int endofArray: public: List(){} List(int size) { array = new int[size]; maxSize - size; endofArray= -1; } void deleteList() { delete[] array: } void SetUp(int size)DATA STRUCTURES AND ALGORITHMS

SHOW ALL { maxSize - size: array = new int[maxSize]; endofArray = -1; }bool isEmpty() { if (endofArray == -1) return true; return false; }

i did

#include #include #include #include #include #include using namespace std; ; 1/ implementing the dynamic List ADT using array 1/ operations to be implemented: read, Modify, delete, isEmpty, insert, countElements class List private: int array: int maxSize; // useful to decide if resizing (doubling the array size) is needed int endofArray: public: List() {} List(int size) { array = new int[size]; maxSize - size; endofArray = -1; } void deleteList() { delete[] array: } void SetUp(int size) { maxSize - size: array = new int[maxSize]; endofArray = -1; } bool isEmpty() { if (endofArray == -1) return true; return false; } } void resize(int s) { ( int tempArray = array: array = new int[s); for (int index = 0; index endofArray+1) insert Index = endofArray+1; if (endofArray == maxSize-1) resize(2*maxSize); for (int index = endofArray; index >= insert Index; index--) array[index+1] - array[index]; array[insertIndex] - data; endofArray++; } int read(int index) { return array[index]; > void modifyElement(int index, int data) { arrayindex] = data; } void deleteElement(int delete Index) { ) // shift elements one cell to the left starting from deleteIndex+1 to endofArray-1 // i.e., move element at deleteIndex + 1 to deleteIndex and so on for (int index = deleteIndex; index void print() for (int index = 0; index > maxValue; int listSize; cout > listSize; //srand(time(NULL)); srand( static_cast(time(nullptr))); using namespace std::chrono; List IntegerList_InsertAtEnd(1); high_resolution_clock::time_point tl = high_resolution_clock:: now(); for (int i = 0; i insertionTime_AtEnd_nano = t2 - tl; double insertionTime_AtEnd = insertionTime_AtEnd_nano.count(); // Write your code to determine the average time per insertion at the beginning of the list 11 and print it out as insertionTime_AtBeginning/listSize as mentioned below cout #include #include #include #include #include using namespace std; // 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->setNextNode Ptr(0); } Node* get HeadPtr() { return headPtr; } bool isEmpty() { if (headPtr->getNextNodePtr() -- 0) return true; return false; } void insert(int data) { ( Node* currentNodePtr - headPtr->getNextNodePtr(); Node* prevNodePtr = headptr; while (currentNodePtr != 0){ if (currentNodePtr->getData() == data) return; prevNodePtr = currentNodePtr; currentNodePtr = currentNodePtr->getNextNodePtr(); } Node* newNode Ptr - new Node(); newNodePtr->setData(data); newNodePtr->setNextNodePtr(0); prevNodePtr->set NextNodePtr(newNodePtr); } void insertAtIndex(int insertIndex, int data) { Node* currentNodePtr = headPtr->getNextNodePtr(); Node* prevNodePtr = headPtr; int index = 0; while (currentNodePtr != 0){ if (currentNodePtr->getData() == return; data) if (index == insertIndex) 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 IterativePrint() { Node* currentNodePtr = headPtr->getNextNodePtr(); while (currentNodePtr != 0){ cout getData() "; currentNodePtr = currentNodePtr->getNextNodePtr(); } cout > maxValue; int list Size; cout > listSize; //srand(time(NULL)); srand( static_cast(time(nullptr))); using namespace std::chrono; List IntegerList_InsertAtEnd; high_resolution_clock::time_point tl = high_resolution_clock:: now(); for (int i = 0; i insertionTime_AtEnd_nano - t2 - t1; double insertionTime_AtEnd = insertionTime_AtEnd_nano.count(); // Write your code to determine the average time per insertion at the beginning of the list // and print it out as insertionTime_At Beginning/listSize as mentioned below cout #include #include #include #include #include using namespace std; ; 1/ implementing the dynamic List ADT using array 1/ operations to be implemented: read, Modify, delete, isEmpty, insert, countElements class List private: int array: int maxSize; // useful to decide if resizing (doubling the array size) is needed int endofArray: public: List() {} List(int size) { array = new int[size]; maxSize - size; endofArray = -1; } void deleteList() { delete[] array: } void SetUp(int size) { maxSize - size: array = new int[maxSize]; endofArray = -1; } bool isEmpty() { if (endofArray == -1) return true; return false; } } void resize(int s) { ( int tempArray = array: array = new int[s); for (int index = 0; index endofArray+1) insert Index = endofArray+1; if (endofArray == maxSize-1) resize(2*maxSize); for (int index = endofArray; index >= insert Index; index--) array[index+1] - array[index]; array[insertIndex] - data; endofArray++; } int read(int index) { return array[index]; > void modifyElement(int index, int data) { arrayindex] = data; } void deleteElement(int delete Index) { ) // shift elements one cell to the left starting from deleteIndex+1 to endofArray-1 // i.e., move element at deleteIndex + 1 to deleteIndex and so on for (int index = deleteIndex; index void print() for (int index = 0; index > maxValue; int listSize; cout > listSize; //srand(time(NULL)); srand( static_cast(time(nullptr))); using namespace std::chrono; List IntegerList_InsertAtEnd(1); high_resolution_clock::time_point tl = high_resolution_clock:: now(); for (int i = 0; i insertionTime_AtEnd_nano = t2 - tl; double insertionTime_AtEnd = insertionTime_AtEnd_nano.count(); // Write your code to determine the average time per insertion at the beginning of the list 11 and print it out as insertionTime_AtBeginning/listSize as mentioned below cout #include #include #include #include #include using namespace std; // 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->setNextNode Ptr(0); } Node* get HeadPtr() { return headPtr; } bool isEmpty() { if (headPtr->getNextNodePtr() -- 0) return true; return false; } void insert(int data) { ( Node* currentNodePtr - headPtr->getNextNodePtr(); Node* prevNodePtr = headptr; while (currentNodePtr != 0){ if (currentNodePtr->getData() == data) return; prevNodePtr = currentNodePtr; currentNodePtr = currentNodePtr->getNextNodePtr(); } Node* newNode Ptr - new Node(); newNodePtr->setData(data); newNodePtr->setNextNodePtr(0); prevNodePtr->set NextNodePtr(newNodePtr); } void insertAtIndex(int insertIndex, int data) { Node* currentNodePtr = headPtr->getNextNodePtr(); Node* prevNodePtr = headPtr; int index = 0; while (currentNodePtr != 0){ if (currentNodePtr->getData() == return; data) if (index == insertIndex) 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 IterativePrint() { Node* currentNodePtr = headPtr->getNextNodePtr(); while (currentNodePtr != 0){ cout getData() "; currentNodePtr = currentNodePtr->getNextNodePtr(); } cout > maxValue; int list Size; cout > listSize; //srand(time(NULL)); srand( static_cast(time(nullptr))); using namespace std::chrono; List IntegerList_InsertAtEnd; high_resolution_clock::time_point tl = high_resolution_clock:: now(); for (int i = 0; i insertionTime_AtEnd_nano - t2 - t1; double insertionTime_AtEnd = insertionTime_AtEnd_nano.count(); // Write your code to determine the average time per insertion at the beginning of the list // and print it out as insertionTime_At Beginning/listSize as mentioned below cout

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!