Назад к вопросам
Junior
86
questionbank

Что такое структура данных стек и как она работает?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Стек — это линейная структура данных, работающая по принципу LIFO (Last-In, First-Out), где последний добавленный элемент является первым извлекаемым.

Основные операции:

  • Push: Добавление элемента в верхнюю часть стека.
  • Pop: Удаление и возврат элемента из верхней части стека.
  • Peek/Top: Просмотр элемента на вершине стека без удаления.
  • isEmpty: Проверка на пустоту стека.
  • size: Получение количества элементов в стеке.

Пример реализации на Swift:

// Простейшая реализация стека с использованием массива
struct Stack<Element> {
    private var elements: [Element] = []

    // Добавление элемента
    mutating func push(_ element: Element) {
        elements.append(element)
    }

    // Удаление и возврат элемента
    mutating func pop() -> Element? {
        elements.popLast() // popLast удобен для LIFO
    }

    // Просмотр верхнего элемента
    func peek() -> Element? {
        elements.last // last удобен для LIFO
    }

    // Проверка на пустоту
    var isEmpty: Bool {
        elements.isEmpty
    }

    // Размер стека
    var size: Int {
        elements.count
    }
}

// Пример использования
var myStack = Stack<Int>()
myStack.push(1)
myStack.push(2)
myStack.push(3)

print(myStack.pop() ?? "Стек пуст") // Вывод: 3
print(myStack.peek() ?? "Стек пуст") // Вывод: 2
print(myStack.size) // Вывод: 2
print(myStack.isEmpty) // Вывод: false

Применение в iOS-разработке:

  • Управление навигацией в UINavigationController (pushViewController, popViewController).
  • Стек вызовов функций.
  • Обработка истории действий (Undo/Redo).
  • Разбор выражений (например, при работе с компиляторами).