Updated Linked List to have constructors
This commit is contained in:
		@@ -7,10 +7,34 @@ namespace Datastructures {
 | 
			
		||||
	{
 | 
			
		||||
	public:
 | 
			
		||||
		LinkedList();
 | 
			
		||||
		LinkedList(T value);
 | 
			
		||||
		~LinkedList();
 | 
			
		||||
		void append(T value);
 | 
			
		||||
		bool insert(T value, int index);
 | 
			
		||||
		bool remove(int index);
 | 
			
		||||
		int count() const;
 | 
			
		||||
 | 
			
		||||
	private:
 | 
			
		||||
		Nodes::LinkedListNode<T> mHead;
 | 
			
		||||
		Nodes::LinkedListNode<T> mTail;
 | 
			
		||||
		std::shared_ptr<Nodes::LinkedListNode<T>> mHead;
 | 
			
		||||
		std::shared_ptr<Nodes::LinkedListNode<T>> mTail;
 | 
			
		||||
		int mCount;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	//Generic Class constructor for the Linked List
 | 
			
		||||
	template <typename T>
 | 
			
		||||
	LinkedList<T>::LinkedList() {
 | 
			
		||||
		mCount = 0;
 | 
			
		||||
		mHead = nullptr;
 | 
			
		||||
		mTail = nullptr;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	//Class constructor for the Linked List, taking a preset value to go into the head of the list
 | 
			
		||||
	template <typename T>
 | 
			
		||||
	LinkedList<T>::LinkedList(T value) {
 | 
			
		||||
		mCount = 1;
 | 
			
		||||
		mHead = std::make_shared<Nodes::LinkedListNode<T>>(value);
 | 
			
		||||
		mTail = mHead;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -7,16 +7,10 @@ namespace Datastructures {
 | 
			
		||||
		class LinkedListNode : public Generic::UndirectedNode<T, LinkedListNode<T>>
 | 
			
		||||
		{
 | 
			
		||||
		public:
 | 
			
		||||
			//Inherit Constructor from generic Undirectetd Node
 | 
			
		||||
			//Inherit Constructor and destructor from generic Undirectetd Node
 | 
			
		||||
			using Generic::UndirectedNode<T, LinkedListNode<T>>::UndirectedNode;
 | 
			
		||||
			std::shared_ptr<LinkedListNode<T>> create(T value, std::shared_ptr<LinkedListNode<T>> next = nullptr);
 | 
			
		||||
			using Generic::UndirectedNode<T, LinkedListNode<T>>::~UndirectedNode;
 | 
			
		||||
		private:
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		//Creates a new node, returning a smart pointer to a stack allocated object
 | 
			
		||||
		template <typename T>
 | 
			
		||||
		std::shared_ptr<LinkedListNode<T>> LinkedListNode<T>::create(T value, std::shared_ptr<LinkedListNode<T>> next) {
 | 
			
		||||
			return std::make_shared<LinkedListNode<T>>(value, next);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user