/**
剑指 Offer 25. 合并两个排序的链表
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
// 使用虚拟头结点,可以帮助简化代码逻辑,不必对第一个结点进行特殊处理
*/
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){
struct ListNode *h = (struct ListNode *)malloc(sizeof(struct ListNode)); // 虚拟头结点
h->next = NULL;
struct ListNode *r = h; // 尾指针
// 归并
while (l1 && l2) {
if (l1->val <= l2->val) {
r->next = l1;
l1 = l1->next;
} else {
r->next = l2;
l2 = l2->next;
}
r = r->next;
r->next = NULL;
}
if (l1 != NULL) r->next = l1;
if (l2 != NULL) r->next = l2;
return h->next;
}
合并两个有序链表 - C语言实现
于 2023-07-08 19:55:20 首次发布