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

Практическая работа №3

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

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

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

Кафедра комплексной информационной безопасности электронно-

вычислительных систем (КИБЭВС)

«Списки» Отчет по практической работе №3

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

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

_________Лысенко Е.М.

__________

Принял Ст. преподаватель кафедры КИБЭВС

________ Лунѐва Е.Е.

__________

Томск 2024

Задание

Реализовать динамический список при помощи двух классов. Класс node

отвечает за узел элемента списка, класс List – за работу со списком.

Реализовать интерфейсную часть – методы:

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

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

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

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

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

Вариант 3. Реализуемый список должен быть циклическим.

Дополнительно реализовать методы: удалить из списка четные элементы.

Удалить из списка повторяющиеся элементы.

2

Содержание

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

4

1 ХОД РАБОТЫ ......................................................................................................

5

1.1

Класс Node ......................................................................................................

5

1.2

Класс List.........................................................................................................

6

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

11

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

12

3

Введение

Целью работы является получение навыков реализации списка и

разработки алгоритмов взаимодействия с ним на языке программирования

C#.

4

1 ХОД РАБОТЫ

В ходе работы был реализован динамический циклический список при

помощи двух классов: Node и List.

1.1 Класс Node

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

Value – хранит значение узла;

Next – ссылка на следующий узел;

Конструктор – инициализирует новый узел с заданным значением.

Рисунок 1.1 – Реализация класса Node

5

1.2 Класс List

Класс List осуществляет управление циклическим списком,

предоставляя методы для добавления, удаления, очистки, поиска и других операций.

Рисунок 1.2 – Реализация класса List

Метод List() – реализация работы со списком – содержит поля:

bool Add – добавляет новый элемент в конец списка;

Рисунок 1.3 – Реализация метода Add класса List

6

bool RemoveItem – удаляет элемент списка (Если удаление произошло успешно, возвращает true, когда элемент в списке отсутствует – false.);

Рисунок 1.4 – Реализация метода RemoveItem класса List

bool Clear – очищает список (Если удаление произошло успешно,

возвращает true, когда список пуст – false);

Рисунок 1.5 – Реализация метода Clear класса List

7

bool Find – проверяет элемент в списке (если элемент находится в списке, то возвращается индекс элемента, иначе –1);

Рисунок 1.6 – Реализация метода Find класса List

bool RemoveEven – удаляет все четные элементы из списка;

Рисунок 1.7 – Реализация метода RemoveEven класса List 8

bool RemoveDuplicates – удаляет все повторяющиеся элементы из списка, оставляя в списке только последний экземпляр;

Рисунок 1.8 – Реализация метода RemoveDuplicates класса Listvoid PrintList – выводит текущий список в консоль;

Рисунок 1.8 – Реализация метода PrintList класса List

9

По варианту задания нужно было дополнительно реализовать две функции: удаление четных чисел и удаление повторяющиеся элементы из списка, блок-схема для второго представлена на рисунке 1.9.

Рисунок 1.9 – Блок-схема функции удаления повторяющиеся элементов из списка

10