2017-03-18 138 views
0

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

谢谢。

+0

。在你的设计中一大缺陷:不知道前面的元素,你正在使用'回来= back.next'这则正好相反,打破结构无法删除从最终的元素。您需要将每个节点的下一个和后一个都存储起来,或者每次都要遍历它。 – Jack

+0

是否有任何理由不使用[LinkedList](https://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html)?它在JRE6及更高版本中可用 –

回答

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为null每一次,它让你失去的休息队列。

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

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