Sobes.tech
Назад к вопросам
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
}