如何遍历Java中的双向链接列表的后向工作?

时间:2014-02-06 21:14:20

标签: java algorithm data-structures

我对在双向链表中向后遍历的理解是从某个位置遍历到列表中的第一个节点。我在java中编写了一个Doubly Linked List类,并在其中编写了一个traverseBack方法。

traverseBack方法的代码如下。

public void traverseBack(int d){
    for(Node n=first; n!=null; n=n.next){
        if(n.data == d){
            System.out.println("\nTraversing in Backward Direction\n");
            while(n!=null){
                System.out.println(n.data);
                n = n.prev;
            }
            return;
        }
        if(n.next==null){
            System.out.println("Given node doesn't exist");
            return;
        }
    }
}

编译并运行代码时没有错误。

我可以问一下,我对双向链表中倒退的理解是否正确?代码中有什么东西我做得不好吗?

1 个答案:

答案 0 :(得分:2)

这里的错误是你似乎没有倒退,你前进了。您正在通过调用Node来迭代for循环中的n=n.next。你不应该打电话给n=n.prev吗?

为什么不从last元素开始并从那里向后循环?你可以这样:

for(Node n=last; n!=null; n=n.prev){  //this is traversing backwards now. 

完成后,根本不需要while循环。