Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практики / ПР3 / СД_П3

.pdf
Скачиваний:
0
Добавлен:
27.06.2025
Размер:
389.12 Кб
Скачать

Министерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

Кафедра безопасности информационных систем (БИС)

СПИСКИ Отчет по практической работе №3

по дисциплине «Структуры данных»

Студент гр. 733-1

_______ Сметанников Д.Е

_______

Принял:

преподаватель КИБЭВС

_______ Д.Р. Уразаев

_______

Томск 2024

Задание

Реализовать динамический список при помощи двух классов. Класс node - отвечает за узел элемента списка, класс List - за работу со списком. Реализовать интерфейсную часть - методы:

инициализация пустого списка - делаем это в конструкторе, если используются классы.

добавление элементов списка в конец bool add (int element)

удаление заданного элемента из списка bool remove_item (int element ), где int element - удаляемый элемент, метод возвращает true если удаление элемента прошло успешно.

Очистка списка -- bool clear(), возвращает true при успешной очистке, false в противоположном случае

поиск элемента списка по образцу

Вариант 3. Реализуемый список должен быть циклическим. Дополнительно реализовать методы: удалить из списка четные элементы. Удалить из списка повторяющиеся элементы.

 

 

Содержание

 

Задание..................................................................................................................

.2

1

Введение................................................................................................................

.4

2

Ход работы.............................................................................................................

5

 

Заключение...........................................................................................................

13

 

Приложение А......................................................................................................

14

1Введение

Целью данного задания является создание простого динамического циклического списока с использованием двух классов. Реализация базовых операций — добавление, удаление, очистка и поиск элементов. Также добавление функции удаления четных и повторяющихся элементов.

2Ход работы

Воснове списка лежит класс Node, который хранит значение элемента и ссылку на следующий узел. Класс MyList управляет списком через два указателя: на голову и на хвост списка. (рис. 1)

Рисунок 1 — Создание классов

Добавление элемента: Новый элемент добавляется в конец списка. Если список пустой, новый элемент становится и головой, и хвостом, а его ссылка указывает на сам себя. В противном случае обновляется указатель хвоста (рис. 2)

Рисунок 2 - Добавление

Удаление элемента: Программа проходит по списку и удаляет первый найденный элемент с указанным значением. Если элемент — голова списка, список корректно обновляется, чтобы хвостовой элемент продолжал ссылаться на новую голову (рис.3)

Рисунок 3 — Удаление

Очистка списка: Полное удаление всех элементов — указатели на голову и хвост обнуляются (рис. 4)

Рисунок 4 — Очистка списка

Поиск элемента: Программа циклично проходит по списку и возвращает результат, если находит элемент (рис. 5)

Рисунок 5 — Поиск

Удаление четных элементов: Список проверяется на наличие четных значений, которые удаляются, с корректировкой указателей (рис. 6)

Рисунок 6 — Удаление четного элемента

Удаление дубликатов: Программа ищет и удаляет повторяющиеся элементы, обновляя ссылки внутри списка (рис. 7)

Рисунок 7 — Удаление одинаковых элементов

Вывод элементов: Проходит по всем узлам, начиная с головы, и выводит значения элементов (рис. 8)

Соседние файлы в папке ПР3