12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #pragma once
- #include <iostream>
- // Forward declaration of LinkedList
- template <typename T> class LinkedList;
- /// <summary>
- /// Template class to allow the LinkedListNode to store any data type
- /// </summary>
- /// <typeparam name="T">Value type</typeparam>
- template <typename T>
- class LinkedListNode {
- private:
- T _value; // Value of the node
- LinkedListNode* _next; // Pointer to the next node in the linked list
- public:
- /// <summary>
- /// Linked list item constructor
- /// </summary>
- /// <param name="value">The value of the node</param>
- /// <param name="next">The next node in the linked list</param>
- LinkedListNode(const T& value, LinkedListNode* next);
- /// <summary>
- /// Retrieve the value of the node
- /// </summary>
- /// <returns>The respective value for the node</returns>
- const T& getValue() const;
- /// <summary>
- /// Retrieve next node in the linked list
- /// </summary>
- /// <returns>Next linked node</returns>
- LinkedListNode* getNext();
- /// <summary>
- /// Assigns the item new value
- /// </summary>
- /// <param name="other">The value to be replaced with</param>
- /// <returns>New linked list item</returns>
- LinkedListNode<T>& operator=(const LinkedListNode<T>& other);
- template <typename U> friend class LinkedList;
- };
- // Implementation of LinkedListNode
- template <typename T>
- LinkedListNode<T>::LinkedListNode(const T& value, LinkedListNode* next)
- : _value(value), _next(next) {}
- template<typename T>
- const T& LinkedListNode<T>::getValue() const {
- return _value;
- }
- template <typename T>
- LinkedListNode<T>* LinkedListNode<T>::getNext() {
- return _next;
- }
- template <typename T>
- LinkedListNode<T>& LinkedListNode<T>::operator=(const LinkedListNode<T>& other) {
- if (this != &other) {
- _value = other._value;
- _next = other._next;
- }
- return *this;
- }
|