1.直接看题解有详细注释
要注意的只有初试是什么状态开始的,什么状态结束的
cpp
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {
if(list1==NULL) return list2;
if(list2==NULL) return list1;
struct ListNode* head = NULL;//新的头节点
//开始找新的头节点是哪个链表的头节点
if(list1->val > list2->val){
head = list2;
list2 = list2->next;
}else{
head = list1;
list1 = list1->next;
}
//此时从head开始串,最后返回head
struct ListNode* cur = head;
while(list1!=NULL && list2!=NULL){
if(list1->val > list2->val){
//串2
cur->next = list2;
list2 = list2->next;
cur =cur->next;
}else{
cur->next = list1;
list1 = list1->next;
cur = cur->next;
}
}
//此时有一个为空了 是哪个呢?作下判断,把剩下那个不空的串起来即可
if(list1==NULL){
cur->next = list2;
}else{
cur->next = list1;
}
return head;
}