aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CST 126/Homework_3/Homework_3.vcxproj4
-rw-r--r--CST 126/Homework_3/Homework_3.vcxproj.filters8
-rw-r--r--CST 126/Homework_3/SinglyLinkedList.hpp45
-rw-r--r--CST 126/Homework_3/linked_list_nodes.hpp48
-rw-r--r--CST 126/Homework_3/node.hpp103
-rw-r--r--CST 126/Homework_3/program.cpp54
-rw-r--r--CST 126/UnitTests/NodeUnitTests.cpp48
-rw-r--r--CST 126/UnitTests/UnitTests.cpp29
-rw-r--r--CST 126/UnitTests/UnitTests.vcxproj1
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>