Sobes.tech
Junior — Middle

Jakie są główne zalety i wady struktury danych Stack?

sobes.tech AI

Odpowiedź od AI

Stos (Stack) to struktura danych oparta na zasadzie LIFO (Last In, First Out), gdzie ostatni dodany element jest usuwany jako pierwszy.

Zalety:

  • Prosta implementacja i użycie.
  • Szybki dostęp do elementu na szczycie (operacje push, pop, peek wykonują się w czasie O(1)).
  • Doskonale nadaje się do zadań związanych z przetwarzaniem w odwrotnej kolejności, np. przeglądanie drzew, cofanie działań, parsowanie.

Wady:

  • Ograniczony dostęp: można pracować tylko z elementem na szczycie, brak dostępu losowego.
  • Rozmiar stosu może być ograniczony (np. stos wywołań w programie), co może prowadzić do przepełnienia.

Przykład w 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
}