JavaのLinkedListからアイテムを削除しようとしています。このリストは私によって実装されており、JavaAPIを使用していません。私が直面している主な問題は、再帰コーディングで常に迷子になっているRECURSIONにあります。
class List{
int N;
List next;
List current;
List(int N){
this.N =N;
this.next = null;
}
@Override
public String toString() {
String o = "";
List curr = this;
while(curr != null){
o += curr.N+"-->";
curr = curr.next;
}
return o+"TAIL";
}
}
実装されたメソッド:
private static List Remove(List L,int N){
if(L == null || L.next == null)
return L;
List current = L;
List previous = null;
while(current != null){
if(current.N == N){
current = current.next;
if(previous == null)previous = current;
else{
previous.next = current;
}
break;
}else{
previous = current;
current = current.next;
}
}
return previous;
}
入力-
List list1 = new List(1);
list1.next = new List(2);
list1.next.next = new List(3);
list1.next.next.next = new List(4);
list1.next.next.next.next = new List(5);
list1.next.next.next.next.next = new List(6);
list1.next.next.next.next.next.next = new List(7);
System.out.println("Before Removal "+list1.toString());
System.out.println("After Removal "+Remove(list1,3));
私が得ている出力は-
- 取り外し前1->2->3-> 4-> 5--> 6 ---> 7-> TAIL
- 取り外し後2->4->5-> 6 ---> 7-> TAIL
current = current.next
ここで、または参照が次の値に設定されているため、値1が失われています。したがって、間違いなく、さまざまな参照に保存されているデータの表示に問題があります。