Java удалить узел из связанного списка и сохранить удаленный узел в стеке

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

package DataStructure.LinkedListPractise;

import java.util.ArrayList;
import java.util.List;

public class practiseLinkedList {
    public static void main(String[] args) {
        List newList = new ArrayList();
        newList.add(32);
        newList.add(388);
        newList.add(129);


        for (int i = 0; i < newList.size(); i++) {
            System.out.println(newList.get(i));
        }
        newList.remove(1);
        System.out.println();
    }
}

Это вопрос в стиле «пожалуйста, напишите все мое приложение» / «пожалуйста, сделайте за меня домашнее задание»; ТАК это не тот сайт.

rzwitserloot 07.05.2024 13:25

Так зачем вообще удалять его из связанного списка?

user207421 07.05.2024 14:06
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы отслеживаете еще один список удаленных индексов и значений, а затем можете повторно применить их по порядку:

   public record Node(int index, int value){};
    
   public static void main(String[] args) {
        List newList = new ArrayList();
        newList.add(32);
        newList.add(388);
        newList.add(129);
        System.out.println("Full list: " + newList);
    
        List<Node> history = new ArrayList();
        history.add(0, new Node(1, (int) newList.remove(1)));
        System.out.println("Remove: 388 " + newList);
        history.add(0, new Node(1, (int) newList.remove(0)));
        System.out.println("Remove: 32 " + newList);
        
        Node lastItem = history.remove(0);
        newList.add(lastItem.index, lastItem.value);
        System.out.println("Return: 32 " + newList);
        
        lastItem = history.remove(0);
        newList.add(lastItem.index, lastItem.value);
        System.out.println("Return: 388 " + newList);
    }
Full list: [32, 388, 129]
Remove: 388 [32, 129]
Remove: 32 [129]
Return: 32 [32, 129]
Return: 388 [32, 388, 129]

Я не до конца понимаю назначение двумерных массивов, но это точно: +1

Leder 07.05.2024 14:42

Двумерный массив предназначен только для упрощения ответа, но, конечно, лучше заменить его пользовательским объектом, например static class Node {int index; int value;} или record Node(int index, int value) или Pair/Tuple, вместо другого массива.

Islam Elbanna 07.05.2024 14:50

Итак, вы сохраняете позицию в исходном списке и значение удаленного элемента исходного списка? IC...

Leder 07.05.2024 15:23

да, вам нужно отслеживать удаленный индекс и удаленный объект, чтобы иметь возможность отменить эту операцию

Islam Elbanna 07.05.2024 16:57

Другие вопросы по теме