NC33合并两个排序的链表
//解题思路
//归并排序的思想
class Solution {
public:
ListNode* Merge(ListNode* head1, ListNode* head2) {
if(head1==nullptr){
return head2;
}
if(head2==nullptr){
return head1;
}
ListNode*head=nullptr;
ListNode*tail=nullptr;
if(head1->val<head2->val){
head=tail=head1;
head1=head1->next;
}else{
head=tail=head2;
head2=head2->next;
}
//循环控制条件&&
//有一个结束就结束
//用if-else
//tail放在if-else外面
//开始合并
while(head1&&head2){
if(head1->val<head2->val){
tail->next=head1;
head1=head1->next;
}else{
tail->next=head2;
head2=head2->next;
}
tail=tail->next;
}
//处理还没有走完的那个节点
while(head1){
tail->next=head1;
head1=head1->next;
tail=tail->next;
}
while(head2){
tail->next=head2;
head2=head2->next;
tail=tail->next;
}
return head;
}
};