Sobes.tech
Junior — Middle

Care sunt principalele avantaje și dezavantaje ale structurii de date Stack?

sobes.tech AI

Răspuns de la AI

Stiva (Stack) este o structură de date cu principiul de funcționare LIFO (Last In, First Out), unde ultimul element adăugat este extras primul.

Avantaje:

  • Ușor de implementat și utilizat.
  • Acces rapid la elementul de deasupra (operațiile push, pop, peek se realizează în O(1)).
  • Potrivit pentru sarcini legate de procesarea în ordine inversă, cum ar fi traversarea unui copac, anularea acțiunilor, analiză sintactică.

Dezavantaje:

  • Acces limitat: se poate lucra doar cu elementul de deasupra, fără acces arbitrar.
  • Dimensiunea stivei poate fi limitată (de exemplu, stiva de apeluri dintr-un program), ceea ce poate duce la supraîncărcare.

Exemplu în 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
}