Стек фиксированного размера
Вы являетесь частью команды разработчиков платформы для обучения программированию. В рамках урока по обработке исключений и созданию структур данных вас попросили реализовать класс Stack на языке Python. Этот стек имеет фиксированный размер и поддерживает три операции:
push(item)
: Добавляет элемент на вершину стека.
pop()
: Удаляет верхний элемент стека и возвращает его.
peek()
: Просматривает верхний элемент стека без его удаления.
Однако ваш класс Stack должен удовлетворять следующим ограничениям:
- Если попытаться добавить элемент в полный стек, операция
push(item)
должна вызывать исключениеStackOverflowError
.
- Если попытаться удалить элемент из пустого стека, операция
pop()
должна вызывать исключениеStackEmptyError
.
Чтобы создать корректную иерархию классов,
StackOverflowError
и StackEmptyError
должны наследоваться от Exception
и не принимать аргументов в своих методах __init__
.Ввод | Вывод |
stack = Stack(3); stack.push('A'); stack.push('B'); stack.push('C'); stack.push('D'); print(stack.peek()); print(stack.pop()); print(stack.pop()); print(stack.pop()); print(stack.pop()) | StackOverflowError: The stack is full
C
C
B
A
StackEmptyError: The stack is empty |
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB