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