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'eccezioneStackOverflowError
se si tenta di inserire un elemento in uno stack pieno.
- L'operazione
pop()
dovrebbe sollevare un'eccezioneStackEmptyError
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