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

4 практика

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

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

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

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

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

СТЕКИ И ОЧЕРЕДИ Отчет по практической работе №4

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

Студент гр. 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

2.7Вывод числа элементов очереди………………………………………...6

2.8Получить первый элемент очереди без удаления………………………6

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

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

Приложение Б……………………………………………………………………10

2

1 Введение

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

добавить в стек, число элементов стека, взять верхний элемент стека без удаления, число элементов в очереди, удалить из очереди, добавить в очередь,

получить первый элемент из очереди без удаления из нее.

3

2Ход работы

2.1Удаление последнего элемента из стека с возвратом

Данный метод реализован через классы и встроенную функцию pop,

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

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

Рисунок 2.1 – Процесс удаления последнего элемента из стека

2.2 Добавление элементов в стек

Метод добавления элементов в стек реализован через цикл for и

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

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

Рисунок 2.2 – Процесс добавления элементов в стек

4

2.3 Узнать число элементов в стеке

Количество элементов в стеке выводится встроенной функцией len.

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

Рисунок 2.3 – Вывод длинны стека

2.4 Вывести последний элемент стека без удаления

Это действие выполняется путём запоминания последнего элемента в новую переменную и последующим выводом на экран этой переменной.

На рисунке 2.4 представлен вывод последнего элемента стека без его удаления.

Рисунок 2.4 – Вывод последнего элемента стека

5

2.5 Удаление из очереди первого элемента

Данный метод реализован через классы и встроенную функцию pop,

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

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

Рисунок 2.5 – Удаление первого элемента в очереди

2.6 Добавление элементов в конец очереди

Метод добавления элементов в очередь реализован через цикл for и

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

На рисунке 2.6 представлено добавление элементов в очередь.

Рисунок 2.6 – Добавление элементов в конец очереди

6

2.7 Вывод числа элементов очереди

Этот метод, как и в случае со стеком реализован через встроенную функцию len.

На рисунке 2.7 представлен вывод количества элементов очереди.

Рисунок 2.7 – Вывод количества элементов очереди

2.8 Получить первый элемент очереди без удаления

Это действие выполняется путём запоминания первого элемента в новую переменную и последующим выводом на экран этой переменной.

На рисунке 2.8 представлен вывод первого элемента очереди без его удаления.

Рисунок 2.8 – Вывод первого элемента очереди

7

3Заключение

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

Наиболее затруднительным было создание и инициализация классов для работы со стеком и очередью.

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

8

Приложение А

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

Создание стека и работа с ним

class Stack:

def __init__(self): self.stack = []

def pop(self): #Удаление и возврат последнего элемента if len(self.stack) == 0:

return None

removed = self.stack.pop() return removed

def push(self, item): #Добавление элементов self.stack.append(item)

s = Stack()

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

print("Введите элементы") for i in range (c):

e=int(input()) s.push(e)

print("1 - Удаление последнего элемента с возвратом") print("2 - Добавить элементы в стек")

print("3 - Число элементов")

print("4 - Взять последний элемент без удаления") z = int(input())

if z == 1: s.pop()

print(s.stack) elif z == 2:

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

print("Введите элементы") for i in range(count):

e = int(input()) s.push(e)

print(s.stack) elif z == 3:

print(len(s.stack)) else:

elem = s.stack[len(s.stack) - 1] print(elem)

print(s.stack)

9

Приложение Б

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

Создание очереди и работа с ней

class Queue:

def __init__(self): self.queue = []

def push(self, item): self.queue.append(item)

def pop(self):

if len(self.queue) == 0: return None

removed = self.queue.pop(0) return removed

s = Queue()

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

print("Введите элементы") for i in range (c):

e=int(input()) s.push(e)

print("1 - Удалить из очереди первый элемент") print("2 - Добавить элементы в очередь") print("3 - Число элементов")

print("4 - Получить первый элемент без удаления") z = int(input())

if z == 1: s.pop()

print(s.queue) elif z == 2:

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

print("Введите элементы") for i in range(count):

e = int(input()) s.push(e)

print(s.queue) elif z == 3:

print(len(s.queue)) else:

elem = s.queue[0] print(elem)

10

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