Лабораторная работа
Время выполнения
20-45 минут
Уровень сложности
Низкий/Средний
Цели
- улучшение навыков учащегося в создании классов с нуля;
- реализация стандартных структур данных в виде классов.
Сценарий
Как Вы уже знаете, стек - это структура данных, реализующая модель LIFO (Last In - First Out). Это просто, и Вы уже к этому привыкли.
Давайте попробуем что-нибудь новенькое. очередь - это модель данных, характеризуемая термином FIFO: First In - Fist Out. Примечание: обычная очередь, известная Вам из магазинов или почтовых отделений, работает точно так же - первым обслуживается покупатель, который пришел первым.
Ваша задача - реализовать класс Queue
с двумя основными операциями:
put(element)
, которая помещает элемент в конец очереди;get()
, которая берет элемент из начала очереди и возвращает его как результат (очередь не может быть пустой для успешного выполнения).
Следуйте подсказкам:
- используйте список в качестве хранилища (как и в случае со стеком)
put()
должен добавлять элементы в начало списка, аget()
должен удалять элементы из конца списка;- определите новое исключение с именем
QueueError
(выберите исключение для его создания) и вызовите его, когдаget()
попытается работать с пустым списком.
Дополните код, который мы предоставили в редакторе. Запустите его, чтобы проверить, похож ли его результат на наш.
Ожидаемый результат
1
dog
False
Queue error
Code
class QueueError(???): # Choose base class for the new exception.#
# Напишите здесь код
#
class Queue:
def __init__(self):
#
# Напишите здесь код
#
def put(self, elem):
#
# Напишите здесь код
#
def get(self):
#
# Напишите здесь код
#
que = Queue()
que.put(1)
que.put("dog")
que.put(False)
try:
for i in range(4):
print(que.get())
except:
print("Queue error")
{{ dockerServerErrorMsg }}
×
{{ errorMsg }}
×
{{ successMsg }}
×