目录
1、题目来源
21. 合并两个有序链表 - 力扣(LeetCode)https://leetcode.cn/problems/merge-two-sorted-lists/
2、函数介绍
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
3、问题示例
4、函数实现
因为list1和list2是升序的,所以比较最小的两个节点,把最小节点插入新链表,最后,返回新链表。
代码
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2)
{
if(list1==NULL) return list2;
if(list2==NULL) return list1;
struct ListNode* head=NULL,*tail=NULL;
while(list1!=NULL&&list2!=NULL)
{
if(list1->val<list2->val)
{
if(tail==NULL) head=tail=list1;
else
{
tail->next=list1;
tail=tail->next;
}
list1=list1->next;
}
else
{
if(tail==NULL) head=tail=list2;
else
{
tail->next=list2;
tail=tail->next;
}
list2=list2->next;
}
}
if(list1) tail->next=list1;
if(list2) tail->next=list2;
return head;
}