Что из себя представляет структура данных stack
Структура данных "стек" (stack) представляет собой коллекцию элементов, организованную по принципу "последний пришёл — первый ушёл" (LIFO, Last In, First Out). Это означает, что элемент, который был добавлен последним, будет извлечён первым. Стек обычно поддерживает две основные операции: `push`, которая добавляет элемент в стек, и `pop`, которая удаляет последний добавленный элемент.
Основные операции:
1. Push — добавляет элемент на вершину стека.
2. Pop — удаляет и возвращает элемент с вершины стека.
3. Peek или Top — возвращает элемент на вершине стека без его удаления.
4. IsEmpty — проверяет, пуст ли стек.
```swift
struct Stack<Element> {
private var storage: [Element] = []
// Добавление элемента в стек
mutating func push(_ element: Element) {
storage.append(element)
}
// Извлечение элемента из стека
mutating func pop() -> Element? {
return storage.popLast()
}
// Просмотр верхнего элемента стека
func peek() -> Element? {
return storage.last
}
// Проверка, пуст ли стек
var isEmpty: Bool {
return storage.isEmpty
}
}
// Пример использования
var stack = Stack<Int>()
stack.push(10)
stack.push(20)
stack.push(30)
print(stack.peek() ?? "Стек пуст") // Выводит 30
print(stack.pop() ?? "Стек пуст") // Выводит 30
print(stack.pop() ?? "Стек пуст") // Выводит 20
print(stack.pop() ?? "Стек пуст") // Выводит 10
```
Зачем он нужен?
Они очень полезны, поскольку они предоставляют простой способ хранения временной информации. Они широко используются для таких задач, как:
- Реализация обратной навигации в приложениях (кнопка "назад").
- Выполнение обхода структур данных, таких как деревья и графы.
- Организация вызовов функций и управление возвращаемыми адресами в программных стеках.
Стек — это как стопка тарелок: последнюю положенную тарелку вы берёте первой. Это помогает управлять данными, которые используются и удаляются в обратном порядке их поступления.
April 23, 2024, easyoffer