JavaRush /Blog Java /Random-FR /Propre implémentation de LinkedList doublement liée, clon...
alexnjc
Niveau 31

Propre implémentation de LinkedList doublement liée, clonage profond.

Publié dans le groupe Random-FR
La tâche consiste à créer votre propre implémentation d'une liste d'objets à simple ou double liaison, mais vous ne pouvez pas utiliser d'implémentations standard de type LinkedList. Écrivez des méthodes de clonage profond de cette liste, vérifiez comment la feuille est clonée. Vous ne pouvez pas utiliser le constructeur de classe pour créer une copie. Lors de la suppression d'éléments d'une copie d'une liste, la liste originale ne doit pas changer, c'est-à-dire que les copies doivent être complètement indépendantes les unes des autres. Quelles méthodes seront optimales ? J'ai écrit un tas de code, tout semble fonctionner sauf le clonage profond. Il y a beaucoup de problèmes lors du changement de liste :-( //List as FILO stack public class MyLinkedList implements Cloneable, Serializable { private Node objects; // top of stack private Node first; // bottom of stack ... Classe interne 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;} ...
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION