aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrPatrickWarner <[email protected]>2024-05-11 11:27:43 -0700
committerrPatrickWarner <[email protected]>2024-05-11 11:27:43 -0700
commit7d1e737ec906d4c75aa9c104198959700096dcb4 (patch)
treed974f43b79676cb010da2d3f2b35545fa72823db
parentchanges (diff)
downloadhomework-1-reecepwarner-homework3.tar.xz
homework-1-reecepwarner-homework3.zip
created insert and deletion functionshomework3
-rw-r--r--CST 126/Homework2/nextdest.txtbin128 -> 93 bytes
-rw-r--r--CST 126/Homework3/SinglyLinkedList.hpp65
-rw-r--r--CST 126/Homework3/main.cpp2
3 files changed, 56 insertions, 11 deletions
diff --git a/CST 126/Homework2/nextdest.txt b/CST 126/Homework2/nextdest.txt
index 0be8381..1efd69c 100644
--- a/CST 126/Homework2/nextdest.txt
+++ b/CST 126/Homework2/nextdest.txt
Binary files differ
diff --git a/CST 126/Homework3/SinglyLinkedList.hpp b/CST 126/Homework3/SinglyLinkedList.hpp
index 22118d6..1d30f0d 100644
--- a/CST 126/Homework3/SinglyLinkedList.hpp
+++ b/CST 126/Homework3/SinglyLinkedList.hpp
@@ -1,6 +1,6 @@
#ifndef SINGLY_LINKED_LIST_HPP
#define SINGLY_LINKED_LIST_HPP
-
+#include <iostream>
template<typename T>
struct ListNode
{
@@ -20,30 +20,77 @@ struct SinglyLinkedList
template<typename T>
inline bool Append(SinglyLinkedList<T>* list, ListNode<T>* node)
{
-
- //we have list
- //we need to add node to end
- //Empty set first node as head
if (list->_size == 0)
{
list->_head = node;
list->_size++;
return true;
}
-
- //ifnotempty
- ListNode<T>* TravelNode = nullptr;
+ ListNode<T>* TraverseNode = nullptr;
for (TravelNode = list->_head; TravelNode->_next!= nullptr;)
{
TravelNode = TravelNode->_next;
}
TravelNode->_next = node;
- return true;//ifsuccess
+ return true;
}
+template<typename T>
+inline bool Prepend(SinglyLinkedList<T>* list, ListNode<T>* node)
+{
+ if (list->_size == 0)
+ {
+ list->_head = node;
+ list->_size++;
+ return true;
+ }
+ node->_next = list->_head;
+ list->_head = node;
+ return true;
+
+}
+template<typename T>
+inline bool RemoveFirst(SinglyLinkedList<T>* list, ListNode<T>* node)
+{
+ if (list->_size == 0)
+ {
+ std::cout << "Empty list... there is nothing to delete!" << std::endl;
+ return true;
+ }
+ ListNode<T>* Temp = list->_head;
+ list->_head = node->_next;
+ list->_size--;
+ delete Temp;
+ return true;
+}
+template<typename T>
+inline bool RemoveLast(SinglyLinkedList<T>* list, ListNode<T>* node)
+{
+ if (list->_size == 0)
+ {
+ std::cout << "Empty list... there is nothing to delete!" << std::endl;
+ return true;
+ }
+ if (list->size == 1)
+ {
+ delete list->_head;
+ list->_head = nullptr;
+ list->_size--;
+ return true;
+ }
+ ListNode<T>* TraverseNode = list->_head;
+ while (TraverseNode->_next->_next != nullptr)
+ {
+ TraverseNode = TraverseNode->_next;
+ }
+ delete TraverseNode->_next;
+ TraverseNode->_next = nullptr;
+ list->_size--;
+ return true;
+}
#endif \ No newline at end of file
diff --git a/CST 126/Homework3/main.cpp b/CST 126/Homework3/main.cpp
index 2536baa..9939411 100644
--- a/CST 126/Homework3/main.cpp
+++ b/CST 126/Homework3/main.cpp
@@ -11,7 +11,5 @@ int main(const int argc, char* argv[])
-
-
return 0;
} \ No newline at end of file