オブジェクトの LinkedList があり、リストのソート順を維持しながら新しいノードを追加 する再帰ListElement
メソッドを作成したいと考えています。
今私は持っています:
public static ListElement InsertList(ListElement head, ListElement newelem) {
if (head == null) {
head = newelem;
head.next = null;
}
else if (head.next == null) {
newelem.next = null;
head.next = newelem;
}
else if (head.value < newelem.value) {
newelem.next = head;
head = newelem;
}
else if (head.value >= newelem.value) {
head = head.next;
return InsertList(head, newelem);
}
return head;
}
そして、私はコードでそれを複数回呼び出しています:
ListElement head = null;
ListElement elem;
// this block of code is repeated multiple times with values of 3, 8, 20, and 15
elem - new ListElement();
elem.value = 6;
head = InsertList( head, elem );
出力は次のとおりです。
6
6 3
8 6 3
20 8 6 3
15 8 6 3
この出力は最初の 3 行については正しいのですが、その後はすべておかしくなります。誰か私のアルゴリズムを改善してくれませんか? InsertList
メソッドをもっと短縮できる気がします。ありがとう!