将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
通过比较两个链表中的数据,利用尾插法实现升序链表
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {
if(list1==NULL)
{
return list2;
}
if(list2==NULL)
{
return list1;
}
//创建头结点
struct ListNode*head=NULL;
struct ListNode*tail=NULL;
//利用尾插实现
while(list1!=NULL&&list2!=NULL)
{
//list1<list2
if(list1->val<=list2->val)
{
if(head==NULL)
{
head=list1;
tail=list1;
}
else
{
tail->next=list1;
tail=list1;
}
list1=list1->next;
}
//list2<list1
else
{
if(head==NULL)
{
head=list2;
tail=list2;
}
else
{
tail->next=list2;
tail=list2;
}
list2=list2->next;
}
//list2无结点后
if(list1!=NULL)
{
tail->next=list1;
}
//list1无结点后
if(list2!=NULL)
{
tail->next=list2;
}
}
return head;
}