From c20ce7c2c3957fffe906f2c1ab5cced6effa94ae Mon Sep 17 00:00:00 2001 From: JamesFlare Date: Wed, 26 Feb 2025 12:16:28 -0500 Subject: [PATCH] add solution of lab 5 --- .vscode/launch.json | 2 +- .vscode/tasks.json | 26 +++++++++ labs/list_implementation/checkpoint1.cpp | 7 +-- labs/list_implementation/checkpoint2 | Bin 0 -> 35960 bytes labs/list_implementation/checkpoint2.cpp | 30 +++++++++++ labs/list_implementation/checkpoint3 | Bin 0 -> 35024 bytes labs/list_implementation/checkpoint3.cpp | 45 ++++++++++++++++ labs/list_implementation/dslist.h | 65 +++++++++++++++-------- 8 files changed, 146 insertions(+), 29 deletions(-) create mode 100755 labs/list_implementation/checkpoint2 create mode 100755 labs/list_implementation/checkpoint3 diff --git a/.vscode/launch.json b/.vscode/launch.json index f5d9fc7..93fecc4 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -51,7 +51,7 @@ "environment": [], "MIMode": "gdb", "miDebuggerPath": "/usr/bin/gdb", - "preLaunchTask": "C/C++: g++ build active file" + "preLaunchTask": "C/C++: g++ build single active file" }, { "name": "nybusninesses", diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 9a9af73..8aa32e9 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -25,6 +25,32 @@ "isDefault": true }, "detail": "Task generated by Debugger." + }, + { + "type": "cppbuild", + "label": "C/C++: g++ build single active file", + "command": "/usr/bin/g++", + "args": [ + "-fdiagnostics-color=always", + "-std=c++17", + "-Wall", + "-Wextra", + "-g", + "${file}", + "-o", + "${fileDirname}/${fileBasenameNoExtension}" + ], + "options": { + "cwd": "${fileDirname}" + }, + "problemMatcher": [ + "$gcc" + ], + "group": { + "kind": "build", + "isDefault": true + }, + "detail": "Task generated by Debugger." } ], "version": "2.0.0" diff --git a/labs/list_implementation/checkpoint1.cpp b/labs/list_implementation/checkpoint1.cpp index 3e3a35f..4c6c412 100644 --- a/labs/list_implementation/checkpoint1.cpp +++ b/labs/list_implementation/checkpoint1.cpp @@ -28,12 +28,8 @@ int main() { // clear out the list a.clear(); - /* - assert (a.size() == 0); - */ - + assert (a.size() == 0); - /* // simple tests of push_front, pop_front, and pop_back a.push_front(5); a.push_back(7); @@ -66,7 +62,6 @@ int main() { a.pop_front(); assert (a.size() == 0); assert (a.begin() == a.end()); - */ return 0; } diff --git a/labs/list_implementation/checkpoint2 b/labs/list_implementation/checkpoint2 new file mode 100755 index 0000000000000000000000000000000000000000..f5eac4d0de1bb1a0b100443e78d397433e727848 GIT binary patch literal 35960 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 literal 0 HcmV?d00001 diff --git a/labs/list_implementation/checkpoint2.cpp b/labs/list_implementation/checkpoint2.cpp index e3631d8..d6d1701 100644 --- a/labs/list_implementation/checkpoint2.cpp +++ b/labs/list_implementation/checkpoint2.cpp @@ -21,6 +21,36 @@ public: NodeB* prev; }; +template +void PushBack(NodeType*& head, NodeType* newNode) { + // If the list is empty, newNode becomes the head + if (!head) { + head = newNode; + } else { + // Otherwise, find the tail and attach there + NodeType* current = head; + while (current->next != nullptr) { + current = current->next; + } + current->next = newNode; + newNode->prev = current; + } +} + +template +void PrintList(NodeType* head) { + NodeType* current = head; + while (current != nullptr) { + // For doubles, you might do: std::cout << std::fixed << std::setprecision(5); + std::cout << current->data; + if (current->next != nullptr) { + std::cout << " -> "; + } + current = current->next; + } + std::cout << " -> nullptr" << std::endl; +} + int main() { // Part 1: test NodeA class. // Initialize an empty linked list, consisting of NodeA nodes. diff --git a/labs/list_implementation/checkpoint3 b/labs/list_implementation/checkpoint3 new file mode 100755 index 0000000000000000000000000000000000000000..53628bda6748a9756723a8e3f9c4dc2b7aaabc9c GIT binary patch literal 35024 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 literal 0 HcmV?d00001 diff --git a/labs/list_implementation/checkpoint3.cpp b/labs/list_implementation/checkpoint3.cpp index 6474b38..a14e799 100644 --- a/labs/list_implementation/checkpoint3.cpp +++ b/labs/list_implementation/checkpoint3.cpp @@ -15,6 +15,51 @@ public: // this function returns a pointer pointing to the head node of the merged list. template Node* mergeLists(Node* head_A, Node* head_B) { + // If one list is empty, return the other + if (!head_A) return head_B; + if (!head_B) return head_A; + + // Decide the new head by comparing the first elements + Node* head = nullptr; + Node* tail = nullptr; + + // Pick whichever head is smaller as the new head + if (head_A->value < head_B->value) { + head = head_A; + head_A = head_A->next; + } else { + head = head_B; + head_B = head_B->next; + } + // At this point, 'head' is the first node of the merged list + head->prev = nullptr; // new head has no previous + tail = head; + + // Continue merging while both lists have nodes + while (head_A && head_B) { + if (head_A->value < head_B->value) { + tail->next = head_A; + head_A->prev = tail; + tail = tail->next; + head_A = head_A->next; + } else { + tail->next = head_B; + head_B->prev = tail; + tail = tail->next; + head_B = head_B->next; + } + } + + // Append any remaining nodes from A or B + if (head_A) { + tail->next = head_A; + head_A->prev = tail; + } else if (head_B) { + tail->next = head_B; + head_B->prev = tail; + } + + return head; } int main() { diff --git a/labs/list_implementation/dslist.h b/labs/list_implementation/dslist.h index c59ef55..eabe73b 100644 --- a/labs/list_implementation/dslist.h +++ b/labs/list_implementation/dslist.h @@ -131,19 +131,32 @@ dslist& dslist::operator= (const dslist& old) { template void dslist::push_front(const T& v) { - - - - - + Node* newp = new Node(v); + // if list is empty + if (!head_) { + head_ = newp; + tail_ = newp; + } else { + newp->next_ = head_; + head_->prev_ = newp; + head_ = newp; + } + ++size_; } template void dslist::pop_front() { - - - - + assert(head_ != NULL); // list must not be empty + Node* temp = head_; + head_ = head_->next_; + if (head_) { + head_->prev_ = NULL; + } else { + // list becomes empty + tail_ = NULL; + } + delete temp; + --size_; } template @@ -163,11 +176,17 @@ void dslist::push_back(const T& v) { template void dslist::pop_back() { - - - - - + assert(tail_ != NULL); // list must not be empty + Node* temp = tail_; + tail_ = tail_->prev_; + if (tail_) { + tail_->next_ = NULL; + } else { + // list becomes empty + head_ = NULL; + } + delete temp; + --size_; } // do these lists look the same (length & contents)? @@ -186,7 +205,7 @@ bool operator== (dslist& left, dslist& right) { template bool operator!= (dslist& left, dslist& right){ return !(left==right); } - template +template typename dslist::iterator dslist::erase(iterator itr) { assert (size_ > 0); --size_; @@ -256,13 +275,15 @@ void dslist::copy_list(const dslist& old) { template void dslist::destroy_list() { - - - - - - - + Node* current = head_; + while (current) { + Node* next = current->next_; + delete current; + current = next; + } + head_ = NULL; + tail_ = NULL; + size_ = 0; } #endif