Stack a Dimensione Fissa

Fai parte del team di sviluppo di una piattaforma per l'insegnamento della programmazione. Come lezione sulla gestione delle eccezioni e sulla creazione di strutture dati, ti è stato chiesto di implementare una classe Stack in Python. Questo Stack ha una dimensione fissa e supporta tre operazioni:
  • push(item): Aggiunge un elemento in cima allo stack.
  • pop(): Rimuove l'elemento in cima allo stack e lo restituisce.
  • peek(): Visualizza l'elemento in cima allo stack senza rimuoverlo.
Tuttavia, la tua classe Stack deve rispettare le seguenti restrizioni:
  • L'operazione push(item) dovrebbe sollevare un'eccezione StackOverflowError se si tenta di inserire un elemento in uno stack pieno.
  • L'operazione pop() dovrebbe sollevare un'eccezione StackEmptyError se si tenta di estrarre un elemento da uno stack vuoto.
Per creare una buona astrazione dell'ereditarietà tra le classi, StackOverflowError e StackEmptyError dovrebbero ereditare da Exception e non accettare argomenti nei loro metodi __init__.
Input
Output
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