Стеки используются большинством (всех?) Языков программирования для отслеживания состояния программы при вызове подпрограмм.
Объяснение : код вашей программыхранится в основной памяти.CPU имеет указатель инструкций, который всегда указывает на следующую инструкцию, которая будет выполнена.Когда инструкция выполнена, этот указатель увеличивается на единицу, чтобы указывать на следующую инструкцию.
Когда ваша программа входит в подпрограмму, указатель инструкции переходит на другой адрес.Когда эта рутина закончена, она должна знать, где она осталась.Итак, последний адрес перед переходом помещается в стек.Когда функция завершится, этим адресом будет самый верхний элемент в стеке.
Это также причина, по которой чрезмерная рекурсия может привести к переполнению стека.Слишком много вложенных вызовов приводит к тому, что в стек помещается много адресов возврата, но ни один из них не удаляется.
Подробнее о Википедия .
Деревья могут использоваться для многих целейнапример, деревья бинарного поиска .