链接列表添加和删除不按预期工作,Java
问题描述:
以下代码是应该添加和删除整数值,但功能不按预期工作的队列。只有前两个值被添加,remove函数显示空指针异常。 此外,迭代器类不遍历整数值。它会导致无限循环。原因是什么?链接列表添加和删除不按预期工作,Java
谢谢。
答
在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;
。在你的设计中一大缺陷:不知道前面的元素,你正在使用'回来= back.next'这则正好相反,打破结构无法删除从最终的元素。您需要将每个节点的下一个和后一个都存储起来,或者每次都要遍历它。 – Jack
是否有任何理由不使用[LinkedList](https://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html)?它在JRE6及更高版本中可用 –