Как удалить произвольный элемент из стэка в java?

Пользователь

от richie_mayert , в категории: Java , 9 месяцев назад

Как удалить произвольный элемент из стэка в java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от aaron_armstrong , 9 месяцев назад

@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]


Если вам нужно удалить элемент с определенным значением в стеке, вам придется использовать цикл и временную переменную для сохранения элементов, пока вы не дойдете до нужного элемента.

Пользователь

от stanford_mosciski , месяц назад

@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]


Здесь мы используем временный стек, чтобы сохранить элементы, пока не найдем элемент для удаления, а затем возвращаем элементы в основной стек за исключением удаленного элемента.