JavaRush /Java-Blog /Random-DE /Eigene Implementierung der doppelt verknüpften LinkedList...
alexnjc
Level 31

Eigene Implementierung der doppelt verknüpften LinkedList, Deep Cloning.

Veröffentlicht in der Gruppe Random-DE
Die Aufgabe besteht darin, eine eigene Implementierung einer einfach oder doppelt verknüpften Liste von Objekten zu erstellen. Sie können jedoch keine Standardimplementierungen vom Typ LinkedList verwenden. Schreiben Sie Methoden zum tiefen Klonen dieser Liste und prüfen Sie, wie das Blatt geklont wird. Sie können den Klassenkonstruktor nicht zum Erstellen einer Kopie verwenden. Beim Löschen von Elementen aus einer Kopie einer Liste sollte sich die ursprüngliche Liste nicht ändern, d. h. die Kopien sollten völlig unabhängig voneinander sein. Welche Methoden sind optimal? Ich habe eine Menge Code geschrieben, alles scheint zu funktionieren, außer Deep Cloning. Beim Ändern der Liste gibt es viele Probleme :-( //List as FILO stack public class MyLinkedList implements Cloneable, Serializable { private Node objects; // top of stack private Node first; // bottom of stack ... Inner class Node // FILO class Node implements Cloneable { private Object o; private Node next; private Node prev; public Node(Object o) { if (o !=null){ this.o = o; next = null; prev = null; System.out.println("First element Node created!"); System.out.println("o= "+o +" next= " + next+" prev= "+ prev); } else throw new IllegalArgumentException("Null element not allowed here!"); } public Node(Object o, Node next) { if (o == null) throw new IllegalArgumentException("Null element not allowed here!"); this.o = o; if (next != null) { this.next = next; this.prev = null; this.next.setPrev(this); System.out.println("element Node created!"); System.out.println("o= "+o +" next= " + next+" prev= "+ prev); } else System.out.println("next == null ?!!"); } public Object getO () { return o; } public Node getNext(){ return next;} public Node getPrev(){ return prev;} public void setO (Object o) { this.o = o;} public void setNext(Node next) { this.next = next;} public void setPrev(Node prev) { this.prev = prev;} ...
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION