カスタム イテレータ/リンク リスト クラスを使用して、最後に反復された要素を削除しようとしています。何らかの理由で、リストの最初の項目 (head 条件) に対してのみこれを行います。条件に問題はありませんか?
If (prev=head) の後の Else の代わりに、If (next != null) を記述して中間ノードを検索し、If (next = null) を記述して最後のノードを検索する必要がありますか? 2 番目の質問: アイテムを削除するには、prev.element = null も記述する必要があります (現在、prev = null しかありません。ノードは消去されますが、そのコンテンツは消去されないと思います。
簡単に言えば、自分で理解できないため、 remove メソッドの何が問題なのですか。どうもありがとうございました。私はこれに何時間も取り組んできましたが、まだ機能していません。
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;
}
}