Sobes.tech
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
}