aboutsummaryrefslogtreecommitdiff
path: root/CST 126/Homework3
diff options
context:
space:
mode:
Diffstat (limited to 'CST 126/Homework3')
-rw-r--r--CST 126/Homework3/Node.hpp2
-rw-r--r--CST 126/Homework3/SinglyLinkedList.hpp43
-rw-r--r--CST 126/Homework3/main.cpp3
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