Практики(Вариант №7) / Практическая работа №3
.pdfМинистерство науки и высшего образования Российской Федерации Федеральное государственное автономное образовательное учреждение высшего образования
«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР)
Кафедра комплексной информационной безопасности электронновычислительных систем (КИБЭВС)
СПИСКИ Отчет по практической работе №3 по дисциплине «Структуры данных»
Студент гр.
________
__.__.2025
Принял
Преподаватель кафедры КИБЭВС
________ Д.Р. Уразаев __.__.2025
Томск 2025
Задание
Реализовать динамический список при помощи двух классов. Класс node - отвечает за узел элемента списка, класс List - за работу со списком. Реализовать интерфейсную часть - методы:
• инициализация пустого списка - делаем это в конструкторе, если используются классы.
•добавление элементов списка в конец bool add (int element)
•удаление заданного элемента из списка bool remove_item (int element ), где int element - удаляемый элемент, метод возвращает true если удаление элемента прошло успешно.
•Очистка списка -- bool clear(), возвращает true при успешной очистке, false в противоположном случае
•поиск элемента списка по образцу
Вариант 7. Реализуемый список должен быть двусвязным. Два упорядоченных динамических списка объединить в один упорядоченный - реализовать в виде метода. Реализовать сортировку элементов списка в виде метода, массив для сортировки не использовать.
2
|
Оглавление |
Задание................................................................................................................... |
2 |
Введение................................................................................................................. |
4 |
1 ХОД РАБОТЫ.................................................................................................... |
5 |
Заключение........................................................................................................... |
11 |
Приложение А...................................................................................................... |
12 |
3
Введение
Целью данного задания является создание простого динамического циклического списока с использованием двух классов. Реализация базовых операций — добавление, удаление, очистка и поиск элементов. Также добавление функции удаления четных и повторяющихся элементов.
4
1 ХОД РАБОТЫ
В основе списка лежит класс Node, который хранит значение элемента и ссылку на следующий узел. Класс MyList управляет списком через два указателя: на голову и на хвост списка (рис. 1).
Рисунок 1 — Создание классов
Добавление элемента: добавляет новый элемент в конец двусвязного списка, сохраняя ссылку на последний элемент через tail (рис. 2).
5
Рисунок 2 — Добавление
Удаление элемента: удаляет первый найденный элемент с заданным значением из двусвязного списка, корректно обновляя указатели head, tail и связи между узлами (рис.3).
Рисунок 3 — Удаление
6
Очистка списка: Полное удаление всех элементов — указатели на голову и хвост обнуляются (рис.4).
Рисунок 4 — Очистка
Поиск элемента: возвращает индекс первого вхождения элемента с заданным значением в списке, считая с нуля (рис.5).
Рисунок 5 — Поиск элемента
7
Сортировка: сортировка списка, путем сортировки обменом (рис. 6).
Рисунок 6 — Сортировка
8
Объединение двух упорядоченных списков в один упорядоченный (рис. 7).
Рисунок 7 — Объединение Для сортировки была составлена блок-схема, которая представлена на
рисунке 8.
9
Рисунок 8 — Блок-схема метода Sort()
10
