Описать класс для реализации работы с выбранной динамической структурой
данных, которая хранит список студентов группы. Класс должен содержать следующие,
доступные пользователю интерфейсы:
- добавление элемента после последнего;
- добавление элемента перед первым;
- добавление элемента по порядку (предполагается, что элемент в динамической
структуре отсортированы, и необходимо, чтобы добавление нового элемента не
нарушило упорядоченности);
- удаление элемента с указанной информационной частью;
- поиск элемента;
- удаление всех элементов;
- сортировка элементов;
- упорядочение текущего элемента (предполагается, что все остальные элементы
упорядочены);
- перегруженный оператор !, определяющий существование элементов в структуре
данных;
- копирование структуры данных с помощью перегруженного оператора
присваивания;
При разработке класса для работы со списками также должны быть реализованы
следующие поля и методы:
- поле (недоступное пользователю), хранящее указатель на текущий элемент;
- получение ссылки на информационную часть текущего элемента (возвращает
удачность операции);
- получение копии информационной части текущего элемента (возвращает
удачность операции);
- перегруженный оператор ++ (префиксный) для перехода к следующему
элементу;
- перегруженный оператор -- (префиксный) для перехода к предыдущему элементу
(для двунаправленного списка);
- метод, переводящий указатель на текущий элемент в начало (конец, при
необходимости) списка.
Кроме перечисленных выше полей и методов может быть реализован итератор
для работы со списком (с аналогичной функциональностью). При этом итератор
должен быть шаблонным классом, дружественным разрабатываемому.
В качестве алгоритма сортировки при работе со списками использовать сортировки,
не требующие доступа к произвольному элементу списка (например эффективные
разновидности алгоритма вставки и т.п.), а при работе с массивом быструю сортировку
(сортировку Хоара).
При разработке класса в его методах НЕ ДОЛЖНЫ использоваться функции
ввода/вывода для работы с консолью.