diff options
Diffstat (limited to 'CST 126/Homework3')
| -rw-r--r-- | CST 126/Homework3/Node.hpp | 2 | ||||
| -rw-r--r-- | CST 126/Homework3/SinglyLinkedList.hpp | 43 | ||||
| -rw-r--r-- | CST 126/Homework3/main.cpp | 3 |
3 files changed, 23 insertions, 25 deletions
diff --git a/CST 126/Homework3/Node.hpp b/CST 126/Homework3/Node.hpp index ddc5b13..1bfbff2 100644 --- a/CST 126/Homework3/Node.hpp +++ b/CST 126/Homework3/Node.hpp @@ -42,7 +42,7 @@ namespace CST_126 template<typename T> inline void Node<T>::Data(const T& Data) { - _data = data; + _data = Data; } } diff --git a/CST 126/Homework3/SinglyLinkedList.hpp b/CST 126/Homework3/SinglyLinkedList.hpp index 0f79890..92f4a1f 100644 --- a/CST 126/Homework3/SinglyLinkedList.hpp +++ b/CST 126/Homework3/SinglyLinkedList.hpp @@ -17,8 +17,6 @@ struct SinglyLinkedList ListNode<T>* _head{ nullptr }; }; -//prototype all your functions! - template<typename T> @@ -39,7 +37,6 @@ inline bool Append(SinglyLinkedList<T>* list, ListNode<T>* node) TraverseNode->_next = node; list->_size++; return true; - } template<typename T> @@ -53,8 +50,8 @@ inline bool Prepend(SinglyLinkedList<T>* list, ListNode<T>* node) } node->_next = list->_head; list->_head = node; + list->_size++; return true; - } template<typename T> @@ -64,7 +61,6 @@ inline bool RemoveFirst(SinglyLinkedList<T>* list) { std::cout << "Empty list... there is nothing to delete!" << std::endl; return true; - } if (list->_size == 1) { @@ -72,11 +68,9 @@ inline bool RemoveFirst(SinglyLinkedList<T>* list) } else { - ListNode<T>* Temp = list->_head; list->_head = list->_head->_next; Temp->_next = nullptr; - list->_size--; } @@ -91,7 +85,7 @@ inline bool RemoveLast(SinglyLinkedList<T>* list) std::cout << "Empty list... there is nothing to delete!" << std::endl; return true; } - if (list->size == 1) + if (list->_size == 1) { list->_head = nullptr; list->_size--; @@ -116,11 +110,11 @@ inline bool InsertAfter(SinglyLinkedList<T>* List, const int Data, ListNode<T>* return true; } ListNode<T>* Traverse = List->_head; - for (auto i = 1u; i < Data && Traverse != nullptr; i++) + for (auto i = 1; i < Data && Traverse != nullptr; i++) { Traverse = Traverse->_next; } - node._next = Traverse->_next; + node->_next = Traverse->_next; Traverse->_next = node; List->_size++; @@ -131,7 +125,22 @@ inline bool InsertAfter(SinglyLinkedList<T>* List, const int Data, ListNode<T>* template <typename T> inline bool InsertBefore(SinglyLinkedList<T>* List, const int Data, ListNode<T>* node) { - return false; + if (List->_head == nullptr) + { + Append(List, node); + return true; + } + ListNode<T>* Traverse = List->_head; + ListNode<T>* Follower = nullptr; + for (auto i = 1; i < Data && Traverse != nullptr; i++) + { + Follower = Traverse; + Traverse = Traverse->_next; + } + node->_next = Follower->_next; + Follower->_next = node; + List->_size++; + return true; } template <typename T> @@ -150,7 +159,6 @@ inline bool Clear(SinglyLinkedList<T>* List) ListNode<T>* Traverse = List->_head; ListNode<T>* TempNode = Traverse; - do { TempNode = Traverse; @@ -187,13 +195,11 @@ inline bool Remove(SinglyLinkedList<T>* List, ListNode<T>* node) } if (Traverse->_next == nullptr) { - //return RemoveLast(List); - return true; + return RemoveLast(List); } Previous->_next = Traverse->_next; - //"delete" Traverse Traverse->_next = nullptr; Traverse->_data = 0; List->_size--; @@ -209,24 +215,19 @@ inline ListNode<T>* Extract(SinglyLinkedList<T>* List, const int Data) ListNode<T>* Temp = new ListNode<T>{ 0, nullptr }; ListNode<T>* Travel = nullptr; - //check if empty + if (Empty(List)) { std::cout << "Empty list, nothing to extract!" << std::endl; return Temp; } - for (Travel = List->_head; Travel->_data != Data && Travel->_next != nullptr;) { Travel = Travel->_next; } Temp->_data = Travel->_data; - //read through list - //find data - //return pointer to the node - //remove node from list if (Remove<T>(List, Travel)) { return Temp; diff --git a/CST 126/Homework3/main.cpp b/CST 126/Homework3/main.cpp index 9939411..fb631b8 100644 --- a/CST 126/Homework3/main.cpp +++ b/CST 126/Homework3/main.cpp @@ -8,8 +8,5 @@ int main(const int argc, char* argv[]) { - - - return 0; }
\ No newline at end of file |