
Практическая работа №3
.pdfМинистерство науки и высшего образования Российской Федерации Федеральное государственное автономное образовательное учреждение высшего образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра комплексной информационной безопасности электронно-
вычислительных систем (КИБЭВС)
«Списки» Отчет по практической работе №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