Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
linkedlist添加和删除未按预期工作,Java_Java_Iterator - Fatal编程技术网

linkedlist添加和删除未按预期工作,Java

linkedlist添加和删除未按预期工作,Java,java,iterator,Java,Iterator,下面的代码是一个队列,它应该添加和删除整数值,但函数没有按预期工作。仅添加前两个值,并且remove函数显示空指针异常。 此外,迭代器类不会迭代整数值。它导致无限循环。原因是什么 front.next = previousNode; previousNode.next = front; 谢谢。添加方法中的这两行似乎在创建一个循环: front.next = previousNode; previousNode.next = front; 这里的循环导致迭代中的无限循环 front.next

下面的代码是一个队列,它应该添加和删除整数值,但函数没有按预期工作。仅添加前两个值,并且remove函数显示空指针异常。 此外,迭代器类不会迭代整数值。它导致无限循环。原因是什么

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及更高版本中提供