JavaRush /Java блог /Random UA /Своя реалізація двозв'язного LinkedList, глибоке клонуван...
alexnjc
31 рівень

Своя реалізація двозв'язного LinkedList, глибоке клонування.

Стаття з групи Random UA
Завдання скласти свою реалізацію однозв'язкового або двозв'язкового списку об'єктів, але при цьому не можна використовувати стандартні реалізації типу LinkedList. Написати методи глибокого клонування цього списку, перевірити як клонується аркуш. Для створення копії не можна використовувати конструктор класу. При видаленні елементів із копії списку при цьому оригінал списку не повинен змінитися, тобто копії мають бути повністю незалежними одна від одної. Які методи будуть оптимальні? Написав купу коду, все начебто працює окрім глибокого клонування. При зміні списку з'являється купа глюків :-( //List as FILO stack public class MyLinkedList implements Cloneable, Serializable { private Node objects; // top of stack private Node first; // bottom of stack ... Внутрішній клас 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;} ...
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ