Linkedlist添加和删除不按预期工作,Java

时间:2017-03-18 02:59:58

标签: java iterator

以下代码是一个Queue,它应该添加和删除整数值,但该函数不能按预期工作。只添加前两个值,remove函数显示空指针异常。 此外,迭代器类不会迭代整数值。它会导致无限循环。原因是什么?

谢谢。

1 个答案:

答案 0 :(得分:1)

add方法中的这两行似乎正在创建一个循环:

front.next = previousNode;
previousNode.next = front;

这里的循环导致迭代中的无限循环。

我认为您需要的只是将上一个节点的下一个节点设置为新节点。

previousNode.next = front;

remove方法的这一部分似乎也不正确:

E n = back.element;
back = back.next;
if (back == null)
    front = null;
else
    back.next = null;

这里的问题是你每次都将back.next设置为空,这会让你失去队列的其余部分。

为了解决这个问题,你只需要删除其他部分,以便保留旧的。

E n = back.element;
back = back.next;
if (back == null)
    front = null;