Sommario:
Definizione - Cosa significa Stack?
Una pila è una struttura concettuale costituita da un insieme di elementi omogenei e si basa sul principio dell'ultimo in uscita (LIFO). Si tratta di un tipo di dati astratto comunemente usato con due operazioni principali, ovvero push e pop. Push e pop vengono eseguiti sull'elemento più in alto, che è l'ultimo elemento aggiunto alla pila. L'operazione push aggiunge un elemento allo stack mentre l'operazione pop rimuove un elemento dalla posizione superiore. Il concetto di stack viene utilizzato nella programmazione e nell'organizzazione della memoria nei computer.
Techopedia spiega Stack
Una pila rappresenta una sequenza di oggetti o elementi in un formato di struttura di dati lineare. Lo stack è costituito da un fondo limitato e tutte le operazioni vengono eseguite nella posizione superiore. Ogni volta che un elemento viene aggiunto allo stack dall'operazione push, il valore superiore viene incrementato di uno e quando un elemento viene espulso dallo stack, il valore superiore viene diminuito di uno. Un puntatore alla posizione più alta dello stack è anche noto come puntatore dello stack.
Uno stack può essere di dimensioni fisse o può avere un'implementazione dinamica in cui è consentito modificare la dimensione. Nel caso di stack con capacità limitata, il tentativo di aggiungere un elemento a uno stack già completo provoca un'eccezione di overflow dello stack. Allo stesso modo, una condizione in cui un'operazione pop tenta di rimuovere un elemento da uno stack già vuoto è nota come underflow.
Uno stack è considerato una struttura di dati limitata in quanto è consentito solo un numero limitato di operazioni. Oltre alle operazioni push e pop, alcune implementazioni possono consentire operazioni avanzate come:
- Peek: visualizza l'elemento più in alto nella pila.
- Duplica: copia il valore dell'elemento superiore in una variabile e reinseriscilo nello stack.
- Scambia: scambia i due oggetti più in cima alla pila.
- Ruota: sposta gli elementi più in alto nella pila come specificato da un numero o muoviti in modo rotante.
Le implementazioni software del concetto di stack vengono eseguite utilizzando matrici ed elenchi collegati in cui viene tracciata la posizione superiore utilizzando rispettivamente un puntatore a variabile o intestazione. Molti linguaggi di programmazione offrono funzionalità integrate per supportare l'implementazione dello stack.
Gli stack hardware sono implementati ai fini dell'allocazione e dell'accesso alla memoria utilizzando un'origine e una dimensione fisse. I registri dello stack vengono utilizzati per memorizzare il valore del puntatore dello stack.
