JavaRush /Java Blog /Random-IT /Propria implementazione di LinkedList doppiamente collega...
alexnjc
Livello 31

Propria implementazione di LinkedList doppiamente collegata, clonazione profonda.

Pubblicato nel gruppo Random-IT
Il compito è creare la propria implementazione di un elenco di oggetti collegati singolarmente o doppiamente, ma non è possibile utilizzare implementazioni standard del tipo LinkedList. Scrivi i metodi per la clonazione profonda di questo elenco, controlla come viene clonata la foglia. Non è possibile utilizzare il costruttore della classe per creare una copia. Quando si eliminano elementi da una copia di un elenco, l'elenco originale non dovrebbe cambiare, ovvero le copie dovrebbero essere completamente indipendenti l'una dall'altra. Quali metodi saranno ottimali? Ho scritto un sacco di codice, tutto sembra funzionare tranne la clonazione profonda. Ci sono molti problemi quando si modifica l'elenco :-( //List as FILO stack public class MyLinkedList implements Cloneable, Serializable { private Node objects; // top of stack private Node first; // bottom of stack ... Classe interna 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;} ...
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION