linkedlist添加和删除未按预期工作,Java
下面的代码是一个队列,它应该添加和删除整数值,但函数没有按预期工作。仅添加前两个值,并且remove函数显示空指针异常。 此外,迭代器类不会迭代整数值。它导致无限循环。原因是什么linkedlist添加和删除未按预期工作,Java,java,iterator,Java,Iterator,下面的代码是一个队列,它应该添加和删除整数值,但函数没有按预期工作。仅添加前两个值,并且remove函数显示空指针异常。 此外,迭代器类不会迭代整数值。它导致无限循环。原因是什么 front.next = previousNode; previousNode.next = front; 谢谢。添加方法中的这两行似乎在创建一个循环: front.next = previousNode; previousNode.next = front; 这里的循环导致迭代中的无限循环 front.next
front.next = previousNode;
previousNode.next = front;
谢谢。添加方法中的这两行似乎在创建一个循环:
front.next = previousNode;
previousNode.next = front;
这里的循环导致迭代中的无限循环
front.next = previousNode;
previousNode.next = front;
我认为您需要的只是将上一个节点的下一个设置为新节点
front.next = previousNode;
previousNode.next = front;
previousNode.next = front;
另外,remove
方法的这一部分似乎不正确:
front.next = previousNode;
previousNode.next = front;
E n = back.element;
back = back.next;
if (back == null)
front = null;
else
back.next = null;
这里的问题是您每次都将设置为back.next
为null,这会使您丢失队列的其余部分
front.next = previousNode;
previousNode.next = front;
为了修复这个问题,您只需要删除else部分,以便保留下一个旧部分
front.next = previousNode;
previousNode.next = front;
E n = back.element;
back = back.next;
if (back == null)
front = null;
您的设计中有一个很大的缺陷:如果不知道前一个元素,就不能从末尾删除元素,您正在使用
back=back.next
,它的作用正好相反并破坏了结构。您需要在每个节点中存储“下一个”和“上一个”,或者每次都要遍历它。是否有任何不使用的原因?它在JRE6及更高版本中提供