Глубокий конструктор копии для связанного списка в JavaJAVA

Программисты JAVA общаются здесь
Anonymous
Глубокий конструктор копии для связанного списка в Java

Сообщение Anonymous »

У меня есть задание HW, и только одна небольшая его часть состоит в том, чтобы создать конструктор копирования, который делает глубокую копию связанного списка, который вы ввели в его параметрах. Мой код дает мне новый список, который точно такой же, как старый (тот, который вы вводите в качестве параметра), и это то, что я хочу, но старый изменяется. < /P>

Вот конструктор: < /p>

Код: Выделить всё

public SortedLinkedSet(SortedLinkedSet copy) {
if (copy == null) {
this.firstNode = null;
} else{
SortedLinkedSetNode firstNode1 = new SortedLinkedSetNode(copy.getFirstNode().value);
this.firstNode = firstNode1;
// so basically I am chaining elements from "copy" to firstNode1 and then making "this" = to firstNode1.
while (copy.firstNode.next !=null) {
firstNode1.add(copy.getFirstNode().next.value);
this.firstNode = firstNode1;
copy.firstNode = copy.firstNode.next;
// at the end of this loop I have a successful new linkedList with the same value, but "copy" has been changed
}
}
}
Если, например, я ввожу связанный список, в котором есть значения (1,2,3) - С этим конструктором я вернусь к новому связанному списку со значениями 1,2,3 , но у старого есть 1 .. Если кто -то может помочь мне с тем, почему это пойдет не так. Спасибо < /p>

Обновление: как указал Иредер, и с помощью теста я сделал, я почти уверен, что проблема заключается в операторе:
copy.firstnode = copy.firstnode.next;
i удалил текущий код и сделал следующий тест: < /p>

SortedLinkedSetNode firstNode = new SortedLinkedSetNode(copy.getFirstNode().value);
this.firstNode=firstNode;

firstNode.add(copy.getFirstNode().next.value);
this.firstNode = firstNode;

firstNode.add(copy.getFirstNode().next.next.value);
this.firstNode = firstNode;
< /code>

И это работает отлично (но я заранее знал, что я тестирую только с 3 -й списком элементов). Как я бы сделал это с циклом while без использования такого оператора, как:
copy.firstnode = copy.firstnode.next;
Я должен каким -то образом переместить список «копировать»?>

Подробнее здесь: https://stackoverflow.com/questions/221 ... st-in-java

Вернуться в «JAVA»