1. Che cos'è una Pila (Stack)?
Una pila (o stack) è una struttura dati astratta che segue il principio LIFO (Last In, First Out). Immagina una pila di piatti appoggiati su un tavolo: puoi aggiungere un piatto solo in cima (inserimento) e puoi prelevare un piatto solo partendo sempre dalla cima (rimozione). Non è possibile accedere direttamente agli elementi sottostanti senza prima rimuovere quelli che si trovano sopra.
2. Le Operazioni Fondamentali
L'accesso agli elementi di uno stack è rigorosamente limitato a un'unica estremità chiamata Cima (Top). Le operazioni principali sono:
- Push: Inserisce un nuovo elemento in cima alla pila. Se la pila ha dimensione massima fissa e risulta piena, si verifica una condizione di errore nota come Stack Overflow.
- Pop: Rimuove e restituisce l'elemento attualmente in cima alla pila. Se la pila è vuota, si verifica un errore di Stack Underflow.
- Peek / Top: Restituisce il valore dell'elemento in cima senza però rimuoverlo dalla struttura.
- IsEmpty: Restituisce un valore booleano che indica se la pila è vuota o contiene elementi.
- Gestione delle chiamate a funzione (Call Stack): I compilatori usano lo stack per memorizzare i registri e gli indirizzi di ritorno durante l'esecuzione di funzioni nidificate.
- Funzionalità Undo/Redo: Nei software di scrittura o grafica per memorizzare l'ordine cronologico delle azioni dell'utente.
- Valutazione di espressioni matematiche e parsing sintattico: Come la verifica delle parentesi bilanciate in un blocco di codice.
3. Simulatore Interattivo: Stack LIFO
Sperimenta direttamente il comportamento di una pila eseguendo le operazioni di Push (inserimento in cima) e Pop (rimozione dalla cima).