Назад к вопросам
Junior — Middle
75
Каковы основные преимущества и недостатки структуры данных Stack?
Компании, где спрашивали
Цифровая Эволюция
Ответ от нейросети
sobes.tech 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
}