Im пытается реализовать метод, который клонирует двойной связанный список. Я пытаюсь сделать это рекурсивно, поскольку это требование.Как клонировать двойной связанный список с использованием рекурсивности
Я думаю, что он клонирует вправо, но когда я пытаюсь добавить еще один элемент в конец списка, он добавляется в исходную очередь, а не в клонированную.
это главное, где я вызывать методы и я клон:
doublelinkedlist<Integer> aux=new doublelinkedlist<Integer>();
doublelinkedlist<Integer> aux2=new doublelinkedlist<Integer>();
aux.addRight(10);
aux.addRight(11);
aux.addRight(9);
aux.addRight(12);
//aux2.addRight(12);
aux2 = (doublelinkedlist<Integer>) aux.clone();
aux2.RemoveRight();
System.out.println("Original Queue: "+aux.toString());
System.out.println("Copy queue: "+aux2.toString());
Это метод клон DoubleLinkedList:
public Object clone(){
doublelinkedlist copia = null;
try{
copia = (doublelinkedlist)super.clone();
if (left != null){
copia.left = (node<E>)left.clone();
}
}catch (CloneNotSupportedException e){
return null;
}
return copia;
}
и это клон класса узла:
public Object clone(){
node<E> copia = null;
try{
copia = (node<E>)(super.clone());
if (next != null){
copia.next = (node<E>)(next.clone());
copia.prev = copia;
}
}catch (CloneNotSupportedException e){
return null;
}
return copia;
}
Вы нашли решение по вашему вопросу? –