Стек является абстрактным типом данных и структурой данных "последний вошел - первым вышел" (LIFO). Для вопросов о стеке вызовов используйте вместо этого [callstack] или [stack-pointer]. Для вопросов об инструменте сборки Haskell используйте вместо него [haskell-stack].

Стек - это структура данных, часто используемая как абстрактный тип данных (ADT) во многих языках программирования, для хранения данных в порядке "последний пришел - первым вышел" (LIFO). Вы можете представить это как колоду карт. Если вы положите карту в верхнюю часть стопки, а затем уберете верхнюю карту из стопки, вы получите ту же карту, которую положили на нее.

Помещение данных в стек называется нажатием. Взятие чего-либо из стека называется сованием. Проверка того, что находится на вершине стека, не удаляя его, называется заглядыванием.

Вот пример программы:

a = new stack()
a.push(5)
b = a.peek()
print(b)
a.push(6)
b = a.pop()
print(b)
b = a.pop()
print(b)

дал бы вывод:

5
6
5

- это структура данных стека, которая используется для отслеживания локальных переменных и позволяет легко вызывать вложенные функции (в том числе для рекурсивных функций). Текущая вершина стека обычно отслеживается специальным регистром . Различные архитектуры ЦП и соглашения о вызовах управляют стеком по-разному, но обычно отправка обратного адреса является частью вызова функции. При возврате всплывает адрес возврата и переходит на него, что позволяет функции возвращаться туда, откуда она была вызвана.

Связанные теги:

  • ошибка при использовании push() для полного стека
  • ошибка при использовании pop() в пустом стеке