尝试在我的Java程序中制作双向链接列表的深层副本时遇到了很多麻烦。

到目前为止,我的方法是:

公共类DblLinkQueue实现Queue {

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是列表中的第一个Node,此链接列表也是循环的。

我的for循环出了点问题,因为它遍历了列表中的所有元素,然后无限期地停留在最后一个元素上。

任何帮助,将不胜感激!

最佳答案

循环结束条件是当前节点之前的节点不是头。我不确定为什么会在那儿,而且我猜这就是为什么会被卡住的原因。不知道您的Node类的设计,我猜想您的next成员在没有后续节点时不会引发任何形式的迭代异常,因此循环将永远进行下去(null节点永远不会与mHead相同的参考值)。

10-06 11:07