← Назад к вопросам

В чем разница между push и pop?

1.0 Junior🔥 61 комментариев
#Основы Java

Комментарии (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)
  • Управления памятью (вызов и возврат из функций)