Я пытаюсь написать единственную функцию в Java (Node sortedmerge(Node node1, Node node2)
), где данные в node1
и node2
уже отсортированы в порядке убывания ({5, 3, 1, 0}). Я придумал реализацию функции, но не могу понять, как сделать ее рекурсивной:
//Defined elsewhere as a global variable
static Node<Integer> head = new Node();
//Used to store the final sorted linked list
Node sortedmerge(Node node1, Node node2) {
// if both the nodes are null
if (node1 == null && node2 == null) {
return null;
}
// if both of them have nodes present traverse them
while (node1 != null && node2 != null) {
// Now compare both nodes current data
if (node1.data <= node2.data) {
Node temp = node1.next;
node1.next = head;
head = node1;
node1 = temp;
} else {
Node temp = node2.next;
node2.next = head;
head = node2;
node2 = temp;
}
}
// If second list reached end, but first list has
// nodes. Add remaining nodes of first list at the
// front of result list
while (node1 != null) {
Node temp = node1.next;
node1.next = head;
head = node1;
node1 = temp;
}
// If first list reached end, but second list has
// node. Add remaining nodes of first list at the
// front of result list
while (node2 != null) {
Node temp = node2.next;
node2.next = head;
head = node2;
node2 = temp;
}
return head;
}
предположительно есть способ сделать это без временного узла (Node temp
) или любых внешних функций ... но на этом этапе я был бы рад заставить его работать рекурсивно (я изо всех сил пытаюсь понять, как реализовать рекурсивные вызовы).