合并两个有序链表
题目描述:
代码实现:
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2)
{
if(list1 == NULL)
return list2;
if (list2 == NULL)
return list1;
struct ListNode* newhead=NULL,*newtail=NULL;
while(list1&&list2)//循环结束条件,list1和list2任一为空
{
if(list1->val<list2->val)
{
//链表为空的情况
if(newhead == NULL)
newhead=newtail=list1;
//链表不为空的情况
else
{
newtail->next=list1;//尾插
newtail=list1;//新的尾
}
list1=list1->next;//迭代
}
else
{
if(newhead==NULL)
newhead=newtail=list2;
else
{
newtail->next=list2;//尾插
newtail=list2;//新的尾
}
list2=list2->next;//迭代
}
}
if(list1)
{
newtail->next=list1;
}
if(list2)
{
newtail->next=list2;
}
return newhead;
}