Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Push и Pop: Основные операции стека
Push и pop — это две фундаментальные операции над структурой данных стек (Stack), работающей по принципу LIFO (Last In, First Out).
Push (добавление элемента)
Push — операция добавления элемента в верхнюю часть стека. Элемент становится новым верхним элементом.
Stack<Integer> stack = new Stack<>();
stack.push(10); // Добавляем 10
stack.push(20); // Добавляем 20
stack.push(30); // Добавляем 30
// Стек: [10, 20, 30] (30 — верхний элемент)
Pop (удаление элемента)
Pop — операция удаления и возврата верхнего элемента стека. После операции стек уменьшается на один элемент.
Integer top = stack.pop(); // Удаляет 30 и возвращает его
System.out.println(top); // Выведет 30
// Стек теперь: [10, 20]
Ключевые различия
| Операция | Действие | Возвращаемое значение | Исключение |
|---|---|---|---|
| push | Добавляет элемент | void | Не выбрасывает исключение |
| pop | Удаляет элемент | Удалённый элемент | EmptyStackException если стек пуст |
Практический пример с обработкой ошибок
Stack<String> stack = new Stack<>();
// Push операции
stack.push("первый");
stack.push("второй");
stack.push("третий");
System.out.println("Размер: " + stack.size()); // 3
// Pop операция
while (!stack.isEmpty()) {
System.out.println(stack.pop());
}
// Выведет: третий, второй, первый
// Попытка pop из пустого стека
try {
stack.pop(); // EmptyStackException
} catch (EmptyStackException e) {
System.out.println("Стек пуст!");
}
Альтернативные методы
Java Collection Framework предоставляет методы-альтернативы:
Stack<Integer> stack = new Stack<>();
// Вместо push() можно использовать add()
stack.add(5); // Аналог push()
// Вместо pop():
stack.remove(); // Удаляет и возвращает верхний элемент (выбросит исключение если пусто)
stack.poll(); // Удаляет и возвращает верхний элемент (вернёт null если пусто)
// Только просмотр без удаления:
Integer peek = stack.peek(); // Возвращает верхний элемент без удаления
Сложность операций
- Push: O(1) амортизированная временная сложность
- Pop: O(1) амортизированная временная сложность
Обе операции работают за константное время, так как работают только с верхним элементом стека.
Применение в реальных задачах
Stacks используются для:
- Проверки сбалансированности скобок
- Преобразования выражений (инфиксная в постфиксную нотацию)
- Отката операций (undo в приложениях)
- Обхода графов в глубину (DFS)
- Управления памятью (вызов и возврат из функций)