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

Практика 3 - Списки - СФ

.pdf
Скачиваний:
8
Добавлен:
06.11.2022
Размер:
374.15 Кб
Скачать

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

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

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

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

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

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

Студент гр. ххххх

________ ххххх

________

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

________ ххххх

________

Томск 2022

Задание

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

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

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

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

3)удаление заданного элемента из списка bool remove_item (int element ),

где int element - удаляемый элемент, метод возвращает true если удаление

элемента прошло успешно;

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

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

Вариант 8. Реализуемый список должен быть циклическим. Два упорядоченных динамических списка объединить в один упорядоченный -

реализовать в виде метода. Реализовать сортировку элементов списка в виде метода.

2

Содержание

1 Введение …………………………………………………………………………... 4

2 Ход работы ………………………………………………………………………... 5

3 Заключение ……………………………………………………………………… 10

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

3

1 Введение

Цель работы: овладеть навыками реализации списка и разработки алгоритмов взаимодействия с ним на языке программирования C#.

4

2 Ход работы

Связный список — базовая динамическая структура данных, состоящая из узлов, каждый из которых содержит как данные, так и ссылку на следующий узел списка.

Листинг программы представлен в приложении А.

При инициализации класса List задаются его свойства head и tail равные null, а также счетчик количества элементов count=0.

При добавлении нового элемента в список выполняется проверка на наличие первого элемента, если его нет, выполняется присвоение первому элементу значения head и tail, т.к. список циклический (Рисунок 2.1), счетчик count увеличивается на 1.

Рисунок 2.1 - Добавление элемента в конец списка

При удалении проверяется положение элемента в списке, а после ссылка на этот элемент переносится на следующий, счетчик count уменьшается на 1.

Если элемент был один, то происходит тоже что и при отчистке (Рисунок 2.2).

5

Рисунок 2.2 - Удаление элемента из списка

При очистке списка элементы head и tail приравниваются к null, а также счетчик элементов count становится равным нулю. На рисунке 2.3 представлен код метода.

6

Рисунок 2.3 - Очистка списка

При поиске элемента сначала проверяется налненность массива, если он пуст, т.е. head равна null, иначе проверяется весь массив с первого элемента, и

если элемент не равен, то ссылка переходит на следующий элемент, и индекс увеличивается на 1. На рисунке 2.4 представлен код метода.

Рисунок 2.4 - Поиск индекса элемента

При слиянии двух списков на вход метода (Union) подаются оба списка,

после чего ко второму добавляются элементы первого , после этого все элементы второго списка подаются в массив f. Далее применяется быстрая сортировка к

7

массиву f. Затем происходит отчистка списка, в итоге отсортированный массив последовательно добавляется в список(рисунок 2.5).

Рисунок 2.5 - Соединение, сортировка списка

8

На рисунке 2.6 представлена блок-схема функции по варианту.

Рисунок 2.6 - Функция Union

9

3Заключение

Врезультате практической работы был написан алгоритм реализации циклического списка, а также была написана функция по объединению и сортировке списка.

10