Note
Una pila (Stack) è una struttura dati con le seguenti operazioni:
Push(S,e): aggiunge un elemento in cima alla pilaPop(S): restituisce l’elemento in cima alla pila cancellandoloEmpty(S): restituiscetruese la pila è vuotaQuesta struttura dati astratta può essere realizzata usando una lista semplicemente connessa o un vettore.
Implementazione con una lista
Se lo stoccaggio dati è nella lista, le operazioni diventano:
Push(S,e): inserisci in testa alla listaPop(S): restituisce il primo elemento della lista, cancellandolo dalla stessaEmpty(S): controlla se il successore della testa è NIL
Implementazione con un vettore
Se lo stoccaggio dati è nelle celle di un vettore, viene mantenuto l’indice della cima della pila (Top of Stack,
Tos), le operazione diventano:
Push(S,e): se c’è spazio, incrementaToSe salvaeinA[ToS]. Se c’è spazio allora , altrimenti può rifiutare o riallocarePop(S): restituisceA[ToS]corrente, e decrementaA[ToS]Empty(S): RestituisceToS = 0Non ha nessun vantaggio rispetto all’implementazione a pila, ma se si rialloca allora si ha uno svantaggio. Tuttavia non avere dati in memoria coesi penalizza le caches, quindi può valer la pena di usare un vettore se non ci sono troppe riallocazioni.