#pragma once template class LinkedList; template class LinkedListNode; template class LinkedListNode { private: friend class LinkedList; templateLinkedListNode(T2&& data); ~LinkedListNode() = default; LinkedListNode* last, * next; LinkedListNode(const LinkedListNode& d); LinkedListNode(LinkedListNode&& d) = delete; LinkedListNode& operator= (LinkedListNode&& d) = delete; LinkedListNode& operator= (const LinkedListNode& d); public: T data; LinkedListNode* getNext(); LinkedListNode* getLast(); }; template class LinkedList { private: LinkedListNode* head,*end; int total; public: LinkedList(); ~LinkedList(); LinkedList(const LinkedList& data); LinkedList(LinkedList&& data) noexcept; LinkedList& operator= (LinkedList&& data) noexcept; LinkedList& operator= (const LinkedList& data); bool isEmpyt(); int size(); void clear(); templatevoid add(T2&& data); LinkedListNode* getHead(); LinkedListNode* getEnd(); void remove(LinkedListNode* node); void sort(bool (*cmp)(const T &a,const T &b)); }; #include"LinkedList.cpp"