Junior — Middle
Какви са основните предимства и недостатъци на структурата от данни Stack?
sobes.tech AI
Отговор от AI
Стекът (Stack) е структура от данни с принципа на работа LIFO (Last In, First Out), където последният добавен елемент се извлича първи.
Предимства:
- Простота на реализиране и използване.
- Бърз достъп до горния елемент (операциите push, pop, peek се изпълняват за O(1)).
- Подходящ за задачи, свързани с обратен ред на обработка, например обход на дърво, отменяне на действия, парсинг.
Недостатъци:
- Ограничен достъп: може да работите само с горния елемент, без произволен достъп.
- Размерът на стека може да бъде ограничен (например, стекът на извиквания в програма), което може да доведе до препълване.
Пример на 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
}