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这里想明白 其他就简单了。