Я пытаюсь свернуть многоуровневый связанный список. Учитывая связанный список, где каждый узел представляет собой связанный список и содержит два указателя его типа: (i) Указатель на следующий узел в основном списке (мы называем его «правильным» указателем в нижнем коде) (ii) Указатель на связанный список, где этот узел является головкой (мы называем его «вниз» указателем в нижнем коде). Всего связанных списков сортируютсяСпрятать связанный список в Java
5 -> 10 -> 19 -> 28
| | | |
V V V V
7 20 22 35
| | |
V V V
8 50 40
| |
V V
30 45
К
5 7 8 10 19 20 22 28 30 35 40 45 50
ниже мой Java-код:
public class FlattenAList {
public static MultiNode<Integer> end = new MultiNode<Integer>(0);
public static MultiNode<Integer> result = end;
public static MultiNode flatten(MultiNode head) {
if (head == null || head.right == null)
return head;
MultiNode<Integer> tmp = head;
while (tmp != null) {
merge(tmp, result);
tmp = tmp.right;
}
return result;
}
public static void merge(MultiNode<Integer> a, MultiNode<Integer> b) {
if (a == null) {
end.down = b;
end = end.down;
return;
}
if (b == null) {
end.down = a;
end = end.down;
return;
}
if (a.data <= b.data) {
end.down = a;
end = end.down;
merge(a.down, b);
} else {
end.down = b;
end = end.down;
merge(a, b.down);
}
}
}
Функция слияния испытывают проблемы, я получаю java.lang. StackOverflowError at java.lang.Integer.intValue (Неизвестный источник)
в если (a.data < = b.data)
Что логика для вас уплощение? Опишите это. Например, на входе есть один символ «20» и два на вашем выходе. На вашем входе есть '28', и он отсутствует на вашем выходе. –
И ** описание **? В настоящее время этот вопрос будет закрыт как вопрос «почему этот код не работает». Вам нужно научиться использовать отладчик и создать SSCCE. Здесь слишком много кода. И никакого объяснения того, что он должен делать. –
Предполагается сгладить отсортированный столбец столбца мудрый, ck desc выше – Odin