Sobes.tech
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
}