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