如何在Java中深度复制双链表
在我的java程序中,我一直在尝试制作一个双链表的深度副本时遇到了不少麻烦
到目前为止,我的方法是:
公共类DblLinkQueue实现队列{
public Object clone() {
DblLinkQueue copy = null;
Node currNode, tmp = null;
try {
copy = (DblLinkQueue)super.clone();
} catch (CloneNotSupportedException err) {}
for (currNode = mHead.next; currNode.next != mHead; currNode = currNode.next) {
}
System.out.println("i: " + i);
return copy;
}
}
mHead是我列表中的第一个节点,这个链表也是循环的
我的for循环有点问题,因为它遍历列表中的所有元素,然后无限地停留在最后一个元素上
任何帮助都将不胜感激
# 1 楼答案
循环结束条件是当前节点之前的节点不是头部。我不知道你为什么会在那里,我猜这就是你被卡住的原因。在不知道节点类的设计的情况下,我猜想
next
成员在没有后续节点时不会抛出任何类型的迭代异常,因此循环将永远进行(一个null
节点将永远不会具有与mHead
相同的引用值)# 2 楼答案
运行当前列表并将每个节点复制到新列表。在下面的列表中,将“当前队列”替换为用于存储当前队列的任何内容
# 3 楼答案
如果我打算复制一个双链接列表,我只需遍历该列表,复制每个项目,并将其附加到一个新列表中。计算出insert/append和iterate函数,那么copy函数就很简单了