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

3 практика

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

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

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

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

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

СПИСКИ, РАБОТА СО СПИСКАМИ Отчет по практической работе №3 по дисциплине «Структуры данных»

Студент гр. 711-2

_______ Е. П. Толстолес

_______

Принял:

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

_______ Н.С. Репьюк

_______

Томск 2022

СОДЕРЖАНИЕ:

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

2Ход работы………………………………………………………………………4

2.1Генерация циклического списка………………………………………...4

2.2Удаление нужного элемента из списка…………………………………4

2.3Перемещение нужного элемента в конец списка………………………4

2.4Отчистка списка………………………………………………………….5

2.5 Поиск элемента по значению……………………………………………5

2.6 Удаление одинаковых элементов массива……………………………...5

3 Заключение…………………………………………………………………..…..7

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

2

1 Введение

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

Дополнительное задание по варианту: реализуемый список должен быть циклическим. Дополнительно реализовывать методы: удаление элемента по индексу. Удалить из списка одинаковый элемент по образцу (оставив первое вхождение элемента-образца).

3

2Ход работы

2.1Генерация циклического списка

Так как в языке программирования Python не существует понятие циклических списков, данный список был реализован через 2 списка: список mas – массив элементов список, и список ссылок links, где каждый элемент ссылается на следующий, а последний элемент ссылается на первый. Все действия, происходящие с основным списком mas, отражаются на списке ссылок links.

На рисунке 2.1 представлены варианты генерации массива.

Рисунок 2.1 - Генерация массивов

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

Удаление элемента реализовано через метод pop, при этом массив links,

также изменяется через этот метод.

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

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

2.3 Перемещение нужного элемента в конец списка

4

Все перемещения элементов в массивах реализованы с помощью цикла for и представляют собой простой перебор массива с последующим удалением нужного элемента и записыванием его в конец списка.

На рисунке 2.3 представлено перемещение элемента массива в конец списка.

Рисунок 2.3 - Перемещение нужного элемента в конец списка

2.4Отчистка списка

Отчистка списка реализована через внутреннюю функцию Python a.clear().

На рисунке 2.4 представлена отчистка списка

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

2.5Поиск элемента по значению

Поиск элемента реализован через цикл for, так как мы ищем значения элемента, значит сравниваем значение i элемента с введёнными данными. При этом сами массивы никак не изменяются.

На рисунке 2.5 - представлен поиск элемента по его значению.

Рисунок 2.5 - Поиск элемента по его значению

2.6Удаление одинаковых элементов массива

5

Удаление элементов внутри главного массива реализовано встроенными функциями Python - list и set. Удаление ссылок на эти элементы реализовано путём замены ссылок на -1, сортировке массива и срезе массива до интересующих нас ссылок.

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

Рисунок 2.6 – Отчистка списка от повторяющихся элементов

6

3Заключение

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

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

Наиболее затруднительным было реализовать удаление повторяющихся

элементов не только в основном списке, а также отчистить ссылки на них в массиве links.

Отчет был составлен согласно ОС ТУСУР 2021.

7

Приложение А

(обязательное)

Программа для работы с циклическим списком

print("1 - создание пустого списка;")

print("2 - генерация списка с рандомными значениями.") z = int(input())

if z == 1: mas = []

links = []

print("Введите количество элементов списка") c = int(input())

count = 0

print("Вводите элементы списка") for l in range(0, 100000):

links.append(count) count += 1

x1 = int(input()) mas.append(x1)

if count == c: break

print(mas) print(links)

else:

import random mas = [] links = [] count = 0

print("Введите количество элементов списка") c = int(input())

for l in range(0, 100000): links.append(count) count += 1

x1 = random.randint(1, 1000000) mas.append(x1)

if count == c: break

print(mas) print(links)

print("Выберите действие со списком:")

print("1 - удаление нужного элемента из списка;") print("2 - Перемещение нужного элемента списка;") print("3 - Отчистка списка;")

print("4 - Поиск элемента по значению;")

print("5 - Удаление одинаковых элементов внутри списка.") y = int(input())

if y == 1:

print("Введите номер элемента для удаления") a = int(input())

mas.pop(a - 1) print(mas) links.pop(a - 1) print(links)

elif y == 2:

print("Введите номер элемента для перемещения") d = int(input())

l = 0

for l in range(0, len(mas)): if l == d - 1:

m = mas[l]

8

n = links[l] del mas[l] del links[l] mas.append(m)

links.append(n) print(mas)

print(links) elif y == 3:

mas.clear() print(mas)

elif y == 4:

print("Введите значения элемента") b = int(input())

for j in range(0, len(mas)): if mas[j] == b:

print(j)

else: mas.sort() count1 = 0

for h in range(1, c):

if mas[h - 1] == mas[h]: links[h - 1] = -1 count1 += 1

print(list(set(mas))) links.sort() print(links[count1:c])

9

Соседние файлы в предмете Структуры данных