Ответ
Стек (Stack) — это абстрактный тип данных, работающий по принципу LIFO (Last In, First Out): последний добавленный элемент извлекается первым.
Основные операции:
push(T value)— добавляет элемент на вершину стека.pop()— удаляет и возвращает элемент с вершины стека.peek()— возвращает элемент с вершины без удаления.isEmpty()— проверяет, пуст ли стек.
Реализация и пример использования в Java:
import java.util.Stack;
Stack<Integer> stack = new Stack<>();
stack.push(10); // Стек: [10]
stack.push(20); // Стек: [10, 20]
stack.push(30); // Стек: [10, 20, 30]
System.out.println(stack.peek()); // 30 (стек остаётся [10, 20, 30])
System.out.println(stack.pop()); // 30 (стек становится [10, 20])
System.out.println(stack.pop()); // 20 (стек становится [10])
Типичные сценарии применения:
- Стек вызовов (Call Stack) для управления вызовами методов и локальными переменными.
- Алгоритмы: обход графа в глубину (DFS), проверка сбалансированности скобок.
- Отмена операций (Undo) в текстовых редакторах.
- Вычисление выражений в обратной польской записи (RPN).