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
}