Junior — Middle
Jaké jsou hlavní výhody a nevýhody datové struktury Stack?
sobes.tech AI
Odpověď od AI
Zásobník (Stack) je datová struktura s principem LIFO (Last In, First Out), kde je poslední přidaný prvek odebrán jako první.
Výhody:
- Jednoduchá implementace a použití.
- Rychlý přístup k hornímu prvku (operace push, pop, peek jsou prováděny v O(1)).
- Vhodné pro úlohy související s obráceným pořadím zpracování, například průchod stromem, vrácení akcí, parsování.
Nevýhody:
- Omezený přístup: lze pracovat pouze s horním prvkem, nikoliv s libovolným.
- Velikost zásobníku může být omezená (například zásobník volání v programu), což může vést k přetečení.
Příklad v 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
}