struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){
struct ListNode*tail=NULL;
struct ListNode*head=NULL;
if(list1==NULL&&list2==NULL){
return NULL;
}
if(list1==NULL){
return list2;
}
if(list2==NULL){
return list1;
}
if(list1->val<=list2->val)
{head=tail=list1;
list1=list1->next;}
else
{head=tail=list2;
list2=list2->next;}
while(list1&&list2){
if(list1->val<=list2->val)
{ tail->next=list1;
list1=list1->next;
tail=tail->next;
}
else
{tail->next=list2;
list2=list2->next;
tail=tail->next;}
}
if(list1==NULL){
tail->next=list2;
}
if(list2==NULL){
tail->next=list1;
}
return head;}
1.简单说说思路就好(题简单)
先选定谁小作为整个大链表头,两个链表要依次比较谁大谁小,然后再一次遍历,移动的时候要考虑 移动之前都是不是空,是否有人是空,然后移动中也要考虑,是否移着移着就空了,然后最后的tail->next=l1或l2这里要思考一下为什么是tail->next这里想明白 其他就简单了。