1. Node MergeLists(Node list1, Node list2) {
2. if (list1 == null) return list2;
3. if (list2 == null) return list1;
4. if (list1.data < list2.data) {
5. list1.next = MergeLists(list1.next, list2);
6. return list1;
7. } else {
8. list2.next = MergeLists(list2.next, list1);
9. return list2;
10. }
11. }
Изначально каждый из двух связанных списков (LL1 и LL2) будет отсортирован (индивидуально).Код только объединяет их.Иллюстрирование на примере SIMPLE
например.ЛЛ1;1->3->4
LL2: 6->8->9
, поскольку list1.data < list2.data
(строка 4) всегда будет истинным (до базового условия выхода (строка 2)), LL1 будет повторяться доконец.И наконец, next
последнего элемента (LL1) будет указывать на первый элемент LL2 (строка 5).Таким образом, 2 LL будут объединены, и мы получим 1->3->4->6->8->9
Конечно, с более сложным примером будет больше рекурсий.