ListNode* mergeTwoLists(ListNode* l1, ListNode* l2){
// 首先生成空链表
ListNode dummy;
ListNode* tail = &dummy;
// 遍历两个有序链表,每次只取一个结点append到新链表里面
while (l1 || l2) {
// 如果l2链表为空,或者l1链表里面的值更小,那么取l1结点追加到
// 新链表尾部
if (!l2 || l1 && l1->val < l2->val) {
auto back = l1->next;
tail->next = l1;
tail = tail->next;
l1 = back;
} else {
//// 其他情况,则把l2结点添加到新链表尾部
auto back = l2->next;
tail->next = l2;
tail = tail->next;
l2 = back;
}
}
// 注意:这里一定要记得把tail.next设置为空。
// 虽然这个题可能并不需要,但是应该养成收尾的好习惯
tail->next = nullptr;
// 返回dummy.next, 不要返回dummy!!
return dummy.next;
}
21. 合并两个有序链表
归并有序链表
最新推荐文章于 2023-03-07 11:45:00 发布
该代码实现了一个功能,将两个已排序的链表合并成一个新的已排序链表。通过创建一个虚拟头节点`dummy`,然后比较两个链表的当前节点值,将较小的节点添加到新链表中,直到其中一个链表为空。最后,确保`tail->next`为空并返回新链表的头部(不包括`dummy`)。
3654

被折叠的 条评论
为什么被折叠?



