1. 题目

2. 方法一:简单思路法
2.1. 代码
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2)
{
ListNode *Link_min=l1,*Link_max=l2,*Temp;
if(l1==NULL||l2==NULL)
{
if(l2==NULL)
return l1;
else
return l2;
}
if(Link_min->val>Link_max->val)
{
Temp=Link_max;
Link_max=Link_min;
Link_min=Temp;
}
while(Link_max!=NULL)
{
if (Link_min->next==NULL)
{
Link_min->next=Link_max;
break;
}
else if(Link_min->next->val>Link_max->val)
{
Temp=Link_max->next;
Link_max->next=Link_min->next;
Link_min->next=Link_max;
Link_min=Link_max;
Link_max=Temp;
if(Link_max==NULL)
break;
}
else
Link_min=Link_min->next;
}
if(l1->val>l2->val)
return l2;
else
return l1;
}
};
2.2. 结果

3. 方法二:递归法
3.1. 代码
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2)
{
if(l1==NULL){return l2;}
if(l2==NULL){return l1;}
if(l1->val<l2->val)
{
l1->next=mergeTwoLists(l1->next,l2);
return l1;
}
else
{
l2->next=mergeTwoLists(l2->next,l1);
return l2;
}
}
};
3.2. 结果
