首页 > 解决方案 > 我可以在没有局部变量的情况下编写 Iterator.next() 的实现吗(双链表)

问题描述

我有一个任务,我应该在其中创建一个给定的双向链表类 Iterable。我不允许更改或添加任何额外的方法。这段代码工作得很好,我只是好奇我是否可以在不使用局部变量的情况下编写它。n是迭代器所在的当前节点。n.succ是列表中的下一个节点(如果没有下一个值,则为 null)。n.pred是列表中的前一个节点(如果没有前一个值,则为 null)。n.val是存储在节点中的值。这是我目前拥有的(效果很好)。

/** Return the next element to enumerate. */
public @Override E next() throws NoSuchElementException {
    if (!hasNext()) throw new NoSuchElementException();
    Node n1 = n;
    n = n.succ;
    return n1.val;
}

我不能说

n = n.succ;
return n.pred.val;

因为如果n.succ为null,那么n.pred会抛出NullPointerException。

标签: javaiteratordoubly-linked-list

解决方案


推荐阅读