Definizione di stack in programmazione

Uno stack è un array o una struttura di elenchi di chiamate di funzione e parametri utilizzati nella moderna programmazione informatica e architettura della CPU. Simile a una pila di piatti in un ristorante a buffet o in una caffetteria, gli elementi in una pila vengono aggiunti o rimossi dalla parte superiore della pila, in un ordine "ultimo in primo, primo in uscita" o LIFO.

Il processo di aggiunta di dati a uno stack viene definito "push", mentre il recupero dei dati da uno stack viene chiamato "pop". Ciò si verifica nella parte superiore dello stack. Un puntatore di pila indica l'estensione della pila, regolandosi quando gli elementi vengono spinti o spuntati in una pila.

Quando viene chiamata una funzione, l'indirizzo dell'istruzione successiva viene inserito nello stack.

Quando la funzione termina, l'indirizzo viene espulso dallo stack e l'esecuzione continua a quell'indirizzo.

Azioni in pila

Esistono altre azioni che possono essere eseguite su uno stack a seconda dell'ambiente di programmazione.

  • Peek: consente l'ispezione dell'elemento più in alto in una pila senza rimuovere effettivamente l'elemento.
  • Scambia: noto anche come "scambio", le posizioni dei due elementi superiori della pila vengono scambiate, il primo elemento diventa il secondo e il secondo diventa il primo.
  • Duplica: l'elemento più in alto viene estratto dalla pila e quindi spinto indietro nella pila due volte, creando un duplicato dell'elemento originale.
  • Ruota: indicato anche come "rotolo", specifica il numero di elementi in una pila che vengono ruotati nel loro ordine. Ad esempio, ruotando i primi quattro elementi di una pila si sposterebbe l'elemento più in alto nella quarta posizione mentre i successivi tre elementi si sposteranno in alto di una posizione.

Lo stack è anche noto come "Last In First Out (LIFO) ".

Esempi: in C e C ++, le variabili dichiarate localmente (o auto) sono memorizzate nello stack.