Junior — Middle
Quali sono i principali vantaggi e svantaggi della struttura dati Stack?
sobes.tech AI
Risposta dell'AI
Lo stack è una struttura dati con il principio di funzionamento LIFO (Last In, First Out), in cui l'ultimo elemento aggiunto viene estratto per primo.
Vantaggi:
- Semplicità di implementazione e utilizzo.
- Accesso rapido all'elemento superiore (le operazioni push, pop, peek sono eseguite in O(1)).
- Ideale per compiti legati all'elaborazione in ordine inverso, come l'attraversamento di alberi, annullamento di azioni, parsing.
Svantaggi:
- Accesso limitato: si può lavorare solo con l'elemento superiore, senza accesso arbitrario.
- La dimensione dello stack può essere limitata (ad esempio, lo stack di chiamata di un programma), il che può portare a overflow.
Esempio in Go:
package main
import "fmt"
type Stack []int
func (s *Stack) Push(v int) {
*s = append(*s, v)
}
func (s *Stack) Pop() (int, bool) {
if len(*s) == 0 {
return 0, false
}
index := len(*s) - 1
elem := (*s)[index]
*s = (*s)[:index]
return elem, true
}
func main() {
var s Stack
s.Push(10)
s.Push(20)
fmt.Println(s.Pop()) // 20, true
fmt.Println(s.Pop()) // 10, true
}