我正在尝试使用自定义迭代器/链表类删除最后一个迭代元素。由于某种原因,它只对列表中的第一项(头部条件)执行此操作。条件有什么问题吗?
我是否应该在 If (prev=head) 之后而不是 Else 中写 If (next != null) 来查找中间节点,并使用 If (next = null) 来查找最后一个节点?第二个问题:要删除项目,我是否也应该写 prev.element = null (现在我只有 prev = null,我想这会删除节点但不会删除它的内容。
很简单,我的删除方法有什么问题,因为我自己无法弄清楚。非常感谢你们。我已经为此工作了很多小时,但我仍然没有让它工作。
public E next() {
if (!hasNext())
throw new NoSuchElementException ();
prev = next;
E element = next.element;
next = next.next;
return element;
}
public void remove() {
if(prev == null) {
throw new IllegalStateException();
}
else {
if(prev == head){
head = head.next;
next = head;
}
else {
next = prev.next;
}
sizeOfList--;
prev = null;
}
}