Una realizazione con vettore di una pila consiste nel memorizzare gli n elementi di una pila, in ordine inverso, nelle prime n posizioni di un vettore di maxlung elementi, mantenendo il cursore alla testa della pila (il cursore indica cosi la prima posizione libera).
Quindi se la pila è vuota il cursore è uguale a 0, mentre se la pila è piena il cursore è uguale a maxlung. FUORIPILA è realizzata decrementando il valore del cursore, mentre INPILA è realizzata incrementando il valore del cursore ed inserendo il nuovo elemento nella posizione del vettore individuata dal cursore. Di seguito vediamo come implementare in linguaggio C gli operatori della pila con vettore. Prima di tutto definiamo la struttura della pila:
Di seguito le funzioni CREAPILA per inizializzare la pila alla sequenza vuota e la funzione PILAVUOTA per verificare che la pila sia vuota. Alle funzioni viene passato un puntatore a struttura di tipo pila.
Inseriamo ora con la funzione INPILA un elemento in testa alla pila.
Eliminiamo con la funzione FUORIPILA un elemento in testa alla pila:
Quindi se la pila non è vuota decremento il cursore alla testa della pila (il cursore che indica la prima posizione libera). In fine vediamo la funzione LEGGIPILA che ci permette di leggere il valore dell’ elemento in testa ad una pila:
La realizzazione di una pila con vettore ha come limiti funzionali la dimensione fissa della struttura dati, infatti la definizione di un valore di maxlung troppo grande può portare ad uno spreco di memoria. Questo problema può essere parzialmente risolto con l ‘ utilizzo di un vettore circolare. Per saperne di più consulta i seguenti approfondimenti:
Tutto quanto riportato in questa pagina è a puro scopo informativo personale. Se non ti trovi in accordo con quanto riportato nella pagina, vuoi fare delle precisazioni, vuoi fare delle aggiunte o hai delle proposte e dei consigli da dare, puoi farlo mandando un email. Ogni indicazione è fondamentale per la continua crescita del sito.