#include<iostream>
using namespace std;
struct ListNode
{
int val;
ListNode* next;
ListNode(int val)
{
this->val=val;
this->next=NULL;
}
};
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode* p;
ListNode* newhead;
if(l1!=NULL&&l2!=NULL)
{
if(l1->val<=l2->val)
{
newhead=l1;
p=l1;
l1=l1->next;
}
else
{
newhead=l2;
p=l2;
l2=l2->next;
}
}
else
{
if(l1==NULL)return l2;
else return l1;
}
while(l1!=NULL&&l2!=NULL)
{
if(l1->val<=l2->val)
{
p->next=l1;
p=l1;
l1=l1->next;
}
else
{
p->next=l2;
p=l2;
l2=l2->next;
}
}
while(l1!=NULL)
{
p->next=l1;
p=l1;
l1=l1->next;
}
while(l2!=NULL)
{
p->next=l2;
p=l2;
l2=l2->next;
}
return newhead;
}
};
// class Solution {
// public:
// ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
// if(l1==NULL&&l2==NULL) return NULL;
// else if(l1==NULL&&l2!=NULL)
// {
// auto p=new ListNode(l2->val);
// p->next=mergeTwoLists(l1,l2->next);
// return p;
// }
// else if(l2==NULL&&l1!=NULL)
// {
// auto p=new ListNode(l1->val);
// p->next=mergeTwoLists(l1->next,l2);
// return p;
// }
// else
// {
// if(l1->val>=l2->val)
// {
// auto p=new ListNode(l2->val);
// p->next=mergeTwoLists(l1,l2->next);
// return p;
// }
// else
// {
// auto p=new ListNode(l1->val);
// p->next=mergeTwoLists(l1->next,l2);
// return p;
// }
// }
// }
// };//递归耗空间 好写
int main()
{
}
剑指 Offer 25. 合并两个排序的链表
最新推荐文章于 2024-11-06 11:05:01 发布