diff options
| author | Chanin Timbal <[email protected]> | 2024-06-05 15:25:47 -0700 |
|---|---|---|
| committer | Chanin Timbal <[email protected]> | 2024-06-05 15:25:47 -0700 |
| commit | 4646ce2a21cd6cba10af60cc3e821eb83ee7e5f9 (patch) | |
| tree | e540a264b95d2aaec40709cb79db67345100b8e3 | |
| parent | Restored completed Homework 1 that was accidentally completed, Code should be... (diff) | |
| download | homework-1-chaninnohea-4646ce2a21cd6cba10af60cc3e821eb83ee7e5f9.tar.xz homework-1-chaninnohea-4646ce2a21cd6cba10af60cc3e821eb83ee7e5f9.zip | |
Created node struct and singlylinkedlist struct, and append function. Also complete Unit Testing for this section.
| -rw-r--r-- | CST 126/Homework_3/Homework_3.vcxproj | 4 | ||||
| -rw-r--r-- | CST 126/Homework_3/Homework_3.vcxproj.filters | 8 | ||||
| -rw-r--r-- | CST 126/Homework_3/SinglyLinkedList.hpp | 45 | ||||
| -rw-r--r-- | CST 126/Homework_3/linked_list_nodes.hpp | 48 | ||||
| -rw-r--r-- | CST 126/Homework_3/node.hpp | 103 | ||||
| -rw-r--r-- | CST 126/Homework_3/program.cpp | 54 | ||||
| -rw-r--r-- | CST 126/UnitTests/NodeUnitTests.cpp | 48 | ||||
| -rw-r--r-- | CST 126/UnitTests/UnitTests.cpp | 29 | ||||
| -rw-r--r-- | CST 126/UnitTests/UnitTests.vcxproj | 1 |
9 files changed, 239 insertions, 101 deletions
diff --git a/CST 126/Homework_3/Homework_3.vcxproj b/CST 126/Homework_3/Homework_3.vcxproj index 5edcf5c..a5681df 100644 --- a/CST 126/Homework_3/Homework_3.vcxproj +++ b/CST 126/Homework_3/Homework_3.vcxproj @@ -129,6 +129,10 @@ <ItemGroup> <ClInclude Include="linked_list_nodes.hpp" /> <ClInclude Include="node.hpp" /> + <ClInclude Include="SinglyLinkedList.hpp" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="program.cpp" /> </ItemGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <ImportGroup Label="ExtensionTargets"> diff --git a/CST 126/Homework_3/Homework_3.vcxproj.filters b/CST 126/Homework_3/Homework_3.vcxproj.filters index 0f7b42e..488c2a2 100644 --- a/CST 126/Homework_3/Homework_3.vcxproj.filters +++ b/CST 126/Homework_3/Homework_3.vcxproj.filters @@ -21,5 +21,13 @@ <ClInclude Include="node.hpp"> <Filter>Header Files</Filter> </ClInclude> + <ClInclude Include="SinglyLinkedList.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + </ItemGroup> + <ItemGroup> + <ClCompile Include="program.cpp"> + <Filter>Source Files</Filter> + </ClCompile> </ItemGroup> </Project>
\ No newline at end of file diff --git a/CST 126/Homework_3/SinglyLinkedList.hpp b/CST 126/Homework_3/SinglyLinkedList.hpp new file mode 100644 index 0000000..8fbf2b2 --- /dev/null +++ b/CST 126/Homework_3/SinglyLinkedList.hpp @@ -0,0 +1,45 @@ +#ifndef SINGLY_LINKED_LIST_HPP +#define SINGLY_LINKED_LIST_HPP + + +struct ListNode { + int _data = 0; + ListNode* _next = nullptr; +}; + +struct SinglyLinkedList { + size_t _size; + ListNode* _head = nullptr; +}; + + +//SinglyLinkedList singlylinkedlist{}; +//ListNode listnode{}; +// +//listnode._data = 1; +//singlylinkedlist._head = &listnode; + +bool Append(SinglyLinkedList* list, ListNode* node) { + + //if empty + if (list->_size == 0) + { + list->_head = node; + list->_size++; + return true; + } + + //if not empty + ListNode* travel = nullptr; + for (travel = list->_head; travel->_next != nullptr;) + { + travel = travel->_next; + } + + travel->_next = node; + return true; +} + + + +#endif diff --git a/CST 126/Homework_3/linked_list_nodes.hpp b/CST 126/Homework_3/linked_list_nodes.hpp index a3122c7..dd178c1 100644 --- a/CST 126/Homework_3/linked_list_nodes.hpp +++ b/CST 126/Homework_3/linked_list_nodes.hpp @@ -1,24 +1,24 @@ -#ifndef LINKED_LIST_NODE_HPP -#define LINKED_LIST_NODE_HPP - -#include "node.hpp" - -namespace CST126 -{ - template <typename T> - class singly_linked_node : Node<t> - { - protected: - singly_linked_node<T>* _next{ nullptr }; - - }; - - template <typename T> - class doubly_linked_node final : singly_linked_node<T> - { - protected: - doubly_linked_node<T>* _prev{ nullptr }; - }; -} - -#endif
\ No newline at end of file +//#ifndef LINKED_LIST_NODE_HPP +//#define LINKED_LIST_NODE_HPP +// +//#include "node.hpp" +// +//namespace CST126 +//{ +// template <typename T> +// class singly_linked_node : Node<t> +// { +// protected: +// singly_linked_node<T>* _next{ nullptr }; +// +// }; +// +// template <typename T> +// class doubly_linked_node final : singly_linked_node<T> +// { +// protected: +// doubly_linked_node<T>* _prev{ nullptr }; +// }; +//} +// +//#endif
\ No newline at end of file diff --git a/CST 126/Homework_3/node.hpp b/CST 126/Homework_3/node.hpp index 32894c8..22d35bc 100644 --- a/CST 126/Homework_3/node.hpp +++ b/CST 126/Homework_3/node.hpp @@ -1,50 +1,53 @@ -#ifndef NODE_HPP -#define NODE_HPP - -namespace CST126 { - - template<typename T> - class Node - { - public: - Node() = default; - Node(const T& data); - - ~Node() = default; - - T& Data(); - T Data() const; - void Data(const T& data); - - - - private: - T _data{}; - }; - - template<typename T> - Node<T>::Node(const T& data) : _data(data) {}; - - - template<typename T> - void Node<T>::Data(const T& data) - { - _data = data; - } - - template<typename T> - T& Node<T>::Data() - { - return _data; - } - - template<typename T> - T& Node<T>::Data(const T& data) - { - _data = data;; - } -} - - - -#endif
\ No newline at end of file +//#ifndef NODE_HPP +//#define NODE_HPP +#include <iostream> +using std::cout; +// +// +//namespace CST126 { +// +// template<typename T> +// class Node +// { +// public: +// Node() = default; +// Node(const T& data); +// +// ~Node() = default; +// +// T& Data(); +// T Data() const; +// void Data(const T& data); +// +// +// +// private: +// T _data{}; +// }; +// +// template<typename T> +// Node<T>::Node(const T& data) : _data(data) {}; +// +// +// template<typename T> +// void Node<T>::Data(const T& data) +// { +// _data = data; +// } +// +// template<typename T> +// T& Node<T>::Data() +// { +// return _data; +// } +// +// template<typename T> +// T& Node<T>::Data(const T& data) +// { +// _data = data;; +// } +//} +// +// +// +//#endif
\ No newline at end of file diff --git a/CST 126/Homework_3/program.cpp b/CST 126/Homework_3/program.cpp new file mode 100644 index 0000000..57efc9d --- /dev/null +++ b/CST 126/Homework_3/program.cpp @@ -0,0 +1,54 @@ +#include "node.hpp" +#include "linked_list_nodes.hpp" + + +struct Node { + int _num; + +}; + +struct ListNode { + Node data; + ListNode* _next; + +}; + +Node DoublesNodeData(Node node); +void DoublesNodeDataRef(Node& node); + +int main(const int argc, char* argv[]) { + /* Node new_node{}; + + new_node._num = 5; + + cout << "Node's num is " << new_node._num << std::endl; + + new_node = DoublesNodeData(new_node); + + std::cout << "Node's num after double is " << new_node._num << std::endl; */ + + ListNode newListNode{}; + Node newData{}; + newData._num = 10; + newListNode.data = newData; + + ListNode secondListNode{}; + secondListNode.data = newData; + + newListNode._next = &secondListNode; + + cout << "We can get to the first and second node: " << newListNode._next->data._num << secondListNode.data._num; + + + return 0; +} + + +Node DoublesNodeData(Node node) { + node._num *= 2; + return node; +} + +void DoublesNodeDataRef(Node& node) { + node._num *= 2; +}
\ No newline at end of file diff --git a/CST 126/UnitTests/NodeUnitTests.cpp b/CST 126/UnitTests/NodeUnitTests.cpp index cefe395..cd0756f 100644 --- a/CST 126/UnitTests/NodeUnitTests.cpp +++ b/CST 126/UnitTests/NodeUnitTests.cpp @@ -1,24 +1,24 @@ -#include "pcd.h" -#include "CppUnitTest.h"" - -using namespace Microsoft::VisualStudio::CppUnitTestFramework; - -#include "node.hpp" -#include "crt_check_memory.hpp" - -using namespace CST126; - -namespace LinkedListUnitTests -{ - TEST_CLASS(NodeUnitTests) - { - public: - - TEST_METHOD(NodeEmptyConstructor_Success) - { - //Arrange - Node<int>* newNode = new Node<int>() - - } - }; -}
\ No newline at end of file +//#include "pcd.h" +//#include "CppUnitTest.h"" +// +//using namespace Microsoft::VisualStudio::CppUnitTestFramework; +// +//#include "node.hpp" +//#include "crt_check_memory.hpp" +// +//using namespace CST126; +// +//namespace LinkedListUnitTests +//{ +// TEST_CLASS(NodeUnitTests) +// { +// public: +// +// TEST_METHOD(NodeEmptyConstructor_Success) +// { +// //Arrange +// Node<int>* newNode = new Node<int>() +// +// } +// }; +//}
\ No newline at end of file diff --git a/CST 126/UnitTests/UnitTests.cpp b/CST 126/UnitTests/UnitTests.cpp index 0908160..f34984e 100644 --- a/CST 126/UnitTests/UnitTests.cpp +++ b/CST 126/UnitTests/UnitTests.cpp @@ -3,14 +3,37 @@ using namespace Microsoft::VisualStudio::CppUnitTestFramework; -namespace UnitTests +#include "SinglyLinkedList.hpp" +#include <list> + +namespace LinkedListUnitTests { - TEST_CLASS(UnitTests) + TEST_CLASS(LinkedListUnitTests) { public: + std::list<int> my_list{ 1, 5, 6, 7, 9, 10}; - TEST_METHOD(TestMethod1) + TEST_METHOD(EmptyList) { + //Arrange + SinglyLinkedList linkedList{}; + + //Assert + Assert::AreEqual(0ull, linkedList._size); + + } + + TEST_METHOD(AppendingLinkedList) + { + //Arrange + SinglyLinkedList linkedList{}; + ListNode* node = new ListNode{ 5, nullptr }; + + //Act + bool success = Append(&linkedList, node); + + //Assert + Assert::AreEqual(5, linkedList._head->_data); } }; } diff --git a/CST 126/UnitTests/UnitTests.vcxproj b/CST 126/UnitTests/UnitTests.vcxproj index e76d443..74883d6 100644 --- a/CST 126/UnitTests/UnitTests.vcxproj +++ b/CST 126/UnitTests/UnitTests.vcxproj @@ -77,6 +77,7 @@ <PropertyGroup Label="UserMacros" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <LinkIncremental>true</LinkIncremental> + <IncludePath>C:\Users\chani\OneDrive\Desktop\CS126\Repos\CST 126\Homework_3</IncludePath> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <LinkIncremental>true</LinkIncremental> |