Как создать связанный список с помощью шаблонов в C++
реализуйте шаблонный класс односвязного списка.
1.Определите узел класса шаблона, который состоит из двух элементов данных: данных шаблона и указателя узла next. Вы можете определить необходимые функции-члены для класса шаблона.
2.Определение шаблона класса MyList класса в класс MyList файл.сек. Класс шаблона состоит из двух элементов данных: головки указателя узла и хвоста указателя узла. Головка указателя указывает на первый узел связанного списка. Хвост указателя указывает на последний узел связанного списка. Изначально связанный список пуст. Определите следующие функции-члены для класса MyList
1.конструктор по умолчанию.
2.конструктор копирования.
3.деструктор.
4.функция push_front принимает данные шаблона в качестве параметра и добавляет их в начало связанного списка (перед первым узлом, если он не пуст).
5.функция push_back принимает данные шаблона в качестве параметра и добавляет их в хвост связанного списка (после последнего узла, если он не пуст).
6.функция isEmpty возвращает true, если связанный список пуст.
7.функция front возвращает данные в первом узле связанного списка.
8.функция back возвращает данные в последнем узле связанного списка.
9.функция pop_front удаляет первый узел в связанном списке. Он не возвращает никаких данных.
10.функция pop_back удаляет последний узел в связанном списке. Он не возвращает никаких данных.
11.определите вложенный итератор класса в классе MyList, который состоит из элементов данных: текущего указателя узла и последнего указателя узла. Определите следующие функции-члены и операторы перегрузки для класса iterator.
11.1 конструктор по умолчанию.
11.2 оператор разыменования * возвращает данные текущего узла.
11.3 оператор Post increment ++ перемещает текущий указатель на следующий узел в списке.
11.4 перегрузка оператора сравнения “не равно” сравнивает итератор с другим итератором. Возвращает true, если текущие указатели обоих итераторов не совпадают.
12. функция begin возвращает итератор с указателем current указывает на первый узел списка, а указатель last указывает на хвост списка.
13. функция end возвращает итератор с указателем current, установленным в NULL, и указателем last, указывающим на хвост списка.
14. функция печати принимает ссылочный параметр std::ostream и печатает все данные, хранящиеся в связанном списке, в ostream с помощью итератора define выше.
Реализуйте функции-члены для узла шаблонных классов, мой список и итератор в списке "мой список" файл.ч
template<class T> class List { public: //Class declarations. class Iterator; class ConstIterator; //Constructors and Destructors. List() : head(NULL), tail(NULL), size(0) {} //Constructor ~List(); //Destructor //Methods Iterator<T> begin(); Iterator<T> end(); void insert(const T& data); void insert(const T& data, const Iterator<T>& iterator); void remove(const Iterator<T>& iterator); int getSize() const; Iterator<T> find(); void sort(); private: class Node<T>; Node<T>* head; Node<T>* tail; int size; }; template<class T> class List<class T>::Iterator { public: Iterator(); //Constructor ~Iterator(); //Destructor T& operator ++ (); T operator ++ (int); T& operator -- (); T operator -- (int); bool operator == (const Iterator<T>& iterator) const; bool operator != (const Iterator<T>& iterator) const; T& operator * (); private: List<T>* list; Node<T>* node; }; template<class T> class List<class T>::ConstIterator { public: ConstIterator(); //Constructor ~ConstIterator(); //Destructor T& operator ++ (); T operator ++ (int); T& operator -- (); T operator -- (int); bool operator == (const ConstIterator<T>& iterator) const; bool operator != (const ConstIterator<T>& iterator) const; T& operator * (); private: const List<T> * list; const Node<T> * node; }; template<class T> class List<class T>::Node { public: Node(const T& _data, const Node* _next = NULL) : data(_data), next(_next) {} //Constructor ~Node(); //Destructor private: T data; Node* next; };
Что я уже пробовал:
Это мой 50% код. пожалуйста, помогите мне сделать еще 50%.
Sergey Alexandrovich Kryukov
- Нет, извини. "Помогите мне сделать еще 50%" - это не вопрос, это просьба сделать 50% (но на самом деле около 90-99, 5%) вашей работы за вас. Вы даже не указали на какие-либо проблемы.
Единственный способ научиться чему-то, выполняя свои задания, - это делать все это самостоятельно.
Однако, если у вас есть какие-то вопросы по смежным темам, мы с удовольствием ответим.
—СА
Patrice T
Твоя Домашняя Работа !