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
}