static ListNode doubleSortedLinkedListMerge(ListNode head1, ListNode head2) {
// 如果有一个链表为空,直接返回另外的链表头
if (head1 == null || head2 == null) {
return head1 == null ? head2 : head1
}
// 两个节点,值最小的作为大链表的头节点
ListNode head = head1.value <= head2.value ? head1 : head2
ListNode prev = head
ListNode first = head.next
// 拿到第二个链表的头节点指针
ListNode second = head == head1 ? head2 : head1
while (first != null && second != null) {
// 分别取两个链表当前的节点值,做比较
if (first.value <= second.value) {
// 如果当前节点值小于等于,则当前链表的指针往后面移动
prev.next = first
first = first.next
} else {
prev.next = second
second = second.next
}
prev = prev.next
}
prev.next = first == null ? second : first
return head
}