繁体   English   中英

在遍历双向链表时如何跳过空虚拟节点

[英]How to skip null dummy nodes when traversing doubly linked lists

我有一个双向链接列表,如下所示:

null 1 2 3 null

当我使用带有以下代码的迭代器遍历列表时,输出将完全打印上面编写的内容。

            Iterator<Integer> it = lst.iterator(); // tests iterator method
            while (it.hasNext()) {
              Integer val = it.next();

              System.out.println(val);
            }

但是,我想在遍历列表时跳过空节点,以便仅打印:

1 2 3

我无法获得执行此操作的代码。 到目前为止,这是我想出的。

            Iterator<Integer> it = lst.iterator(); // tests iterator method
            while (it.hasNext()) {
              Integer val = it.next();
              if (val == null)
                 it.next()

              System.out.println(val);
            }

问题是我收到了NoSuchElementException错误,但是我不知道如何解决它。 我的猜测是我得到了这个错误,因为当我到达第二个空虚拟节点时,我尝试跳过它,但是没有其他节点可以跳转。

我的问题是,我该如何更改代码,以便在跳过两个空虚拟节点的同时打印双向链接列表中的每个元素?

您要做的就是将测试与println结合使用:

while (it.hasNext()) {
   Integer val = it.next();
   if (val != null){
       System.out.println(val);
   }
}

如果在循环中执行额外的下一步,则跳过一个hasNext,这就是您遇到异常的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM