Sobes.tech
Junior — Middle

Mik az előnyei és hátrányai vannak a Stack adatstruktúrának?

sobes.tech MI

Válasz az MI-től

A verem (Stack) egy olyan adatszerkezet, amely a LIFO (Last In, First Out) elvet követi, ahol az utolsó hozzáadott elem kerül elsőként kivételre.

Előnyök:

  • Egyszerű megvalósítás és használat.
  • Gyors hozzáférés a legfelső elemhez (push, pop, peek műveletek O(1) időben végrehajthatók).
  • Kifejezetten alkalmas olyan feladatokra, amelyek fordított sorrendben történő feldolgozást igényelnek, például fa bejárás, műveletek visszavonása, elemzés.

Hátrányok:

  • Korlátozott hozzáférés: csak a legfelső elemmel lehet dolgozni, véletlenszerű hozzáférés nem lehetséges.
  • A verem mérete korlátozott lehet (pl. a program hívási verem), ami túlcsorduláshoz vezethet.

Példa Go nyelven:

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
}