Javaの単純なLinkedListの実装については、thisの記事を読んでいました。すべてがうまくいっていますが、メソッドを削除してください。
対応する要素を削除する必要があるということです。つまり、これは私の削除メソッドです。JavaでシンプルなLinkedListの自己実装
private Link head;
public void remove(Object obj) {
if (task == null)
System.out.println("no");
else {
Link linkCurr = head;
if (head != null) {
for (int i = 0; i < size; ++i) {
if (obj.equals(linkCurr.getData())){
linkCurr.setNext(linkCurr.getNext().getNext());
size--;
break;
}
linkCurr = linkCurr.getNext();
}
}
}
}
これは、ノードとリンクのロジックを操作するクラスです。
private class Link
{
Link next;
Object data;
public Link(Object data) {
next = null;
this.data = data;
}
public Task getData() {
return data;
}
public Link getNext() {
return next;
}
public void setNext(Link next)
{
this.next = next;
}
}
ので、問題は、次のである - 私は(削除のパラメータとして設定することによって)リスト内の最初のOBJを削除する - それが消えますが、私は、第二またはいずれかを削除しようとした場合そうでなければ、私が望むものの次のものが削除されています。
私は助けていただきありがとうございます、事前に感謝します。より多くの情報が必要な場合は、私のLinkedList here!の完全なコードです。入力されたノードと一致するノードのためのリストを検索しているこれが何をやっている
Link linkCurr = head;
if (head != null) {
for (int i = 0; i < size; ++i) {
if (obj.equals(linkCurr.getData())){
linkCurr.setNext(linkCurr.getNext().getNext());
size--;
break;
}
linkCurr = linkCurr.getNext();
}
}
:
は、@Marshall Tigerus、ありがとうございました。あなたのメモは非常に良いです、私は非常に感謝しています。最後のものを除いてすべての要素に対して正常に機能します。私の例のように、task5は削除されず、さらにサイズも減少していません。これは、最後の要素を削除しようとすると、文の場合でも入力されていないことを意味します。 – Monstryyy
forループで++ iの代わりにi ++に変更するか、i <= sizeに変更してみてください。それ以外の場合は、リストの最後の項目に反復しない可能性があります。 –
ええ、すでにそれも見つかりました。固定の試みが残っています。とにかく、ありがとう、マーシャル。あなたはとても役に立ちました。がんばろう! – Monstryyy