Источник: Nuances of Programming Когда я узнал, что такое стек, мне стало интересно его практическое применение. Оказалось, что чаще всего эта структура используется для имплементации операции “Отмена” ( то есть, ⌘+Z или Ctrl+Z). Чтобы понять, как это работает, разберемся с определением стека. Что такое стек? Стек — список элементов, который может быть изменён лишь с одной стороны, называющейся вершиной стека. Представьте приспособление для раздачи тарелок, в котором тарелки стоят в стопке. Новые тарелки можно добавлять только поверх уже имеющихся, а брать можно лишь сверху. Таким образом, чем позже тарелку положат в стопку, тем раньше её оттуда возьмут. В рамках структур данных это называется LIFO-принципом (последним пришёл — первым ушёл). Если использовать терминологию, то стек поддерживает операции добавления (push) и удаления (pop) элементов на его вершине. Зачем использовать стек для отмены? Потому что обычно мы хотим отменить последнее действие. Стек позволяет добавлять элемен