Стек фиксированного размера

Вы являетесь частью команды разработчиков платформы для обучения программированию. В рамках урока по обработке исключений и созданию структур данных вас попросили реализовать класс 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

To check your solution you need to sign in
Sign in to continue