循环双链表类的深拷贝问题
以下循环双链表类的深拷贝构造方法有什么错误??如何改正?
public CirDoublyLinkedList(CirDoublyLinkedList<T> list)
{
this();
DLinkNode<T> p=list.head.next;
DLinkNode<T> rear=this.head;
While(p!=list.head){
rear.next=new DLinkNode<T>(p.data,rear,this.head);
rear=rea.next;
p=p.next;
}}
代码 看不懂啥意思,麻烦大虾们指点!谢!
------解决方案--------------------你这个应该不是双向链表吧
循环链表的话
你传进来的list也许是循环链表,但是你拷贝没有做到循环
在while循环外面应该还要加一句rear.next = this.head
暂时还没看出其他问题
------解决方案-------------------- 同意上面的 呵呵
------解决方案--------------------先顶一下,一会再说研究的问题,,,,
------解决方案--------------------帮顶~~~~~~
------解决方案--------------------初略看了下,问题应该出在这句:
rear.next=new DLinkNode<T>(p.data,rear,this.head);
新的结点构造应该是这样new DLinkNode<T>(data, preNode, nextNode),即第二个参数是此结点的上一个结点,第三个参数是此结点的下一个结点。
而这句代码里preNode是对的,但nextNode一直指向this.head,当然形成不了双向循环列表了,形成的是一个反向循环,正向都指向head的列表
------解决方案--------------------帮顶一个
------解决方案--------------------不明白lz你画个双链表的图,用图画下它的复制,删除之类的过程,就知道代码是什么意思