Назад к вопросам
Intern
78
questionbank
Что такое стеки?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Стек — это структура данных, работающая по принципу LIFO (Last-In, First-Out). Элементы добавляются и удаляются только с одного конца, называемого вершиной стека.
Основные операции:
push: добавление элемента на вершину стека.pop: удаление элемента с вершины стека и его возврат.peek: получение значения элемента на вершине стека без его удаления.isEmpty: проверка, пуст ли стек.
В Java стек представлен классом Stack, который является подклассом Vector.
// Пример использования Stack
import java.util.Stack;
public class StackExample {
public static void main(String[] args) {
Stack<String> stack = new Stack<>();
stack.push("Первый"); // Добавляем элементы
stack.push("Второй");
stack.push("Третий");
System.out.println("Вершина стека: " + stack.peek()); // Смотрим верхний элемент
while (!stack.empty()) { // Пока стек не пуст
System.out.println("Извлекаем: " + stack.pop()); // Извлекаем элементы
}
}
}
Альтернативой и более рекомендуемым подходом в современных Java-разработках является использование ArrayDeque как стека, так как он обеспечивает лучшую производительность.
// Пример использования ArrayDeque как стека
import java.util.ArrayDeque;
import java.util.Deque;
public class ArrayDequeStackExample {
public static void main(String[] args) {
Deque<String> stack = new ArrayDeque<>(); // Используем Deque как стек
stack.push("Первый"); // Добавляем элементы
stack.push("Второй");
stack.push("Третий");
System.out.println("Вершина стека: " + stack.peek()); // Смотрим верхний элемент
while (!stack.isEmpty()) { // Пока стек не пуст
System.out.println("Извлекаем: " + stack.pop()); // Извлекаем элементы
}
}
}
Применение стеков:
- Вычисление арифметических выражений (например, в обратной польской нотации).
- Отмена/повтор операций в редакторах (Ctrl+Z/Ctrl+Y).
- Управление вызовами функций в операционной системе.
- Рекурсивные алгоритмы.
- Обход графов и деревьев (поиск в глубину).