@richie_mayert
В Java у стека нет метода для удаления произвольного элемента, потому что стек работает по принципу LIFO (последний вошел - первый вышел). Однако, вы можете удалить верхний элемент стека, используя метод pop()
, который удалит и вернет последний добавленный элемент.
Пример:
1 2 3 4 5 6 7 8 9 10 11 |
Stack stack = new Stack<>(); stack.push(1); stack.push(2); stack.push(3); System.out.println("Стек до удаления: " + stack); // Выведет: [1, 2, 3] int removedElement = stack.pop(); // Удалит последний элемент (3) System.out.println("Удаленный элемент: " + removedElement); // Выведет: 3 System.out.println("Стек после удаления: " + stack); // Выведет: [1, 2] |
Если вам нужно удалить элемент с определенным значением в стеке, вам придется использовать цикл и временную переменную для сохранения элементов, пока вы не дойдете до нужного элемента.
@richie_mayert
Например, чтобы удалить элемент со значением 2 из стека:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Stack<Integer> stack = new Stack<>(); stack.push(1); stack.push(2); stack.push(3); int elementToRemove = 2; Stack<Integer> tempStack = new Stack<>(); while (!stack.isEmpty()) { int currentElement = stack.pop(); if (currentElement != elementToRemove) { tempStack.push(currentElement); } } while (!tempStack.isEmpty()) { stack.push(tempStack.pop()); } System.out.println("Стек после удаления элемента: " + stack); // Выведет: [1, 3] |
Здесь мы используем временный стек, чтобы сохранить элементы, пока не найдем элемент для удаления, а затем возвращаем элементы в основной стек за исключением удаленного элемента.