Ответ
Стек (Stack) — это структура данных, работающая по принципу LIFO (Last In, First Out): последний добавленный элемент извлекается первым.
Очередь (Queue) — это структура данных, работающая по принципу FIFO (First In, First Out): первый добавленный элемент извлекается первым.
Основные операции и примеры на Java:
Стек (используется Deque вместо устаревшего Stack):
Deque<Integer> stack = new ArrayDeque<>();
stack.push(1); // Добавить в вершину
stack.push(2);
int top = stack.pop(); // Извлечь с вершины -> вернет 2
int peek = stack.peek(); // Посмотреть вершину -> вернет 1
Очередь:
Queue<Integer> queue = new LinkedList<>();
queue.offer(1); // Добавить в конец
queue.offer(2);
int head = queue.poll(); // Извлечь из начала -> вернет 1
int peek = queue.peek(); // Посмотреть начало -> вернет 2
Области применения:
- Стек: вызов функций (call stack), отмена действий (undo), обход деревьев (DFS), синтаксический анализ.
- Очередь: обработка задач в порядке поступления, кэширование (например, LRU-кэш), обход графов (BFS), буферизация.