1、思路
同时遍历两条有序链表,将较少的节点接到
head
之后;当一条链表遍历完毕后,直接将另一条链表剩余部分全部接在后面即可。
2、代码
list_node * merge_list(list_node * head1, list_node * head2) { list_node *head = new list_node(), *p = head; while (head1 != nullptr && head2 != nullptr) //两条链表都不为空时 { if (head1->val < head2->val) //每次选择较小的节点 { p = p->next = head1; head1 = head1->next; } else { p = p->next = head2; head2 = head2->next; } } if (head1 != nullptr) p->next = head1; //判断两条链表是否有剩余 if (head2 != nullptr) p->next = head2; return head->next; }