Стек в программировании — это упорядоченная структура данных, которая работает по принципу «последним пришёл, первым вышел» (LIFO). 24 Это значит, что последний элемент, добавленный в стек, будет взят из него первым. 2 Добавлять новые элементы и удалять существующие из стека можно только с одного конца, который называется вершиной. 2
Некоторые области применения стеков в программировании:
- для реализации рекурсии; 1
- для вычислений постфиксных значений; 1
- для временного хранения данных, например истории запросов или изменений. 1
Есть два вида стека:
- Стек вызовов. 25 Это структура данных, которая управляет вызовами функций во время выполнения программы. 2 Когда компьютер выполняет программу и доходит до вызова какой-то функции, ему нужно ненадолго переключиться, чтобы эту самую функцию выполнить. 2 Чтобы запомнить, где он остановился, компьютер сохраняет в памяти специальные закладки — так называемые точки перехода. 2 Область памяти, где хранятся точки перехода, и называется стеком вызовов. 2
- Стек данных. 25 Этот вид стеков часто используют для работы с разветвлёнными типами данных: деревьями, графами, XML-документами, JSON-объектами и другими. 2 Например, стеки данных хорошо подходят для обхода деревьев в глубину — когда нужно посетить все узлы дерева, чтобы сделать с ними что-то, скажем, вывести все значения. 2