У меня есть LinkedList из ListElement
объектов, и я хотел бы создать метод рекурсивного , который добавляет новые узлы, сохраняя при этом отсортированный порядок списка.Добавление элемента в отсортированный LinkedList
Прямо сейчас у меня есть:
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
Этот выход правильный для первых трех строк, но после этого все становится странным. Может ли кто-нибудь улучшить мой алгоритм? Я чувствую, что метод InsertList
может быть сокращен намного больше. Благодаря!
Я вижу 2 проблемы с ним, как это: 1) Я думаю, что вы должны полностью изменить свои первые 2 elseifs, так как ваш не покрывающий случай, когда head.next равна нулю , но newelem.value больше, чем head.value. 2) в последнем случае, если вы не должны переназначать голову. – DMulligan