Stack
In informatica, uno stack è una struttura dati usata per memorizzare una raccolta di oggetti. I singoli elementi possono essere aggiunti e memorizzati in uno stack usando un'operazione push. Gli oggetti possono essere recuperati usando un'operazione pop, che rimuove un elemento dallo stack.
Quando un oggetto viene aggiunto a uno stack, viene collocato sopra tutti gli elementi inseriti in precedenza. Quando un elemento viene rimosso, può essere rimosso dalla parte superiore o inferiore dello stack. Uno stack in cui gli elementi vengono rimossi dalla parte superiore è considerato uno stack "LIFO" (Last In, First Out, ultimo a entrare, primo a uscire). Puoi immaginare uno stack LIFO come un mazzo di carte su cui appoggi singole carte, per poi pescare le carte dalla parte superiore. In uno stack "FIFO" (First In, First Out, primo a entrare, primo a uscire), gli elementi vengono rimossi dalla parte inferiore. Puoi immaginare uno stack FIFO come una fila in un distributore automatico, in cui gli articoli vengono distribuiti nell'ordine in cui sono stati inseriti nella macchina.
Gli stack hanno diverse applicazioni nella programmazione informatica. Gli stack LIFO, ad esempio, possono essere usati per recuperare oggetti usati di recente da una cache. Gli stack FIFO possono essere usati per assicurarsi che i dati vengano recuperati nell'ordine in cui sono stati inseriti, una funzione che può essere usata per elaborare dati in una coda.
Sebbene gli stack siano comunemente usati dai programmatori, in genere non li noterai mentre usi un programma. Questo perché la creazione degli stack e le operazioni push e pop vengono eseguite in background mentre è in esecuzione un'applicazione e non sono visibili all'utente. Tuttavia, se uno stack esaurisce la memoria, si verificherà un "overflow dello stack". Se il programma non lo gestisce correttamente, un overflow dello stack può generare un messaggio di errore o causare un arresto anomalo del programma.
NOTE: Il termine "stack" può anche riferirsi a uno stack di protocolli, costituito da più protocolli di rete che lavorano insieme. Ogni protocollo è classificato in uno dei sette diversi livelli definiti nel modello OSI.
Metti alla prova le tue conoscenze