Deep Copy Constructor für verknüpfte Liste in JavaJava

Java-Forum
Anonymous
 Deep Copy Constructor für verknüpfte Liste in Java

Post by Anonymous »

Ich habe eine HW -Zuordnung und nur ein kleiner Teil davon ist, einen Kopierkonstruktor zu erstellen, der eine tiefe Kopie der verlinkten Liste erstellt, die Sie in seine Parameter eingegeben haben. Mein Code gibt mir eine neue Liste, die genau der alte ist (die, die Sie als Parameter eingeben), und das ist was ich möchte, aber der alte wird geändert. < /P>

Hier ist der Konstruktor:

Code: Select all

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
}
}
}
Wenn ich beispielsweise eine verlinkte Liste eingehe, die die Werte (1,2,3) enthält - mit diesem Konstruktor erhalte ich eine neue verlinkte Liste mit Werten 1,2,3 Aber der alte hat nur 1. Wenn mir jemand helfen kann, warum dies falsch ist, wäre es großartig. Danke < /p>

Update: Wie Ireeder betonte, und mit einem Test, den ich durchgeführt habe, bin ich mir fast sicher, dass das Problem in der Anweisung vorliegt:
Copy.Firstnode = Copy.Firstnode.Next;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>

Und das funktioniert perfekt (aber ich wusste im Voraus, dass ich mit nur 3 Elementliste teste). Wie würde ich es mit einer Weile Schleife tun, ohne eine solche Anweisung zu verwenden:
copy.firstnode = Copy.Firstnode.Next;>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post