将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的
输入:
1->2->4, 1->3->4
输出: 1->1->2->3->4->4
输出: 1->1->2->3->4->4
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode combine(0); //创建一个节点
ListNode* newnode=&combine; //让newnode指向新节点;
while(l1!=NULL&&l2!=NULL) //当l1 或者l2其中之一遍历玩之后跳出循环
{
if(l1->val>=l2->val)
{
newnode->next=l2; //将值小的连接在newnode后面
newnode=l2; //newnode指向l2;
l2=l2->next; //向后移动
}
else
{
newnode->next=l1;
newnode=l1;
l1=l1->next;
}
}
if(l1==NULL) //如果l1遍历完
{
newnode->next=l2; //将l2剩余部分连接到之后
}
else
{
newnode->next=l1;
}
return combine.next;
}
};
else
{
newnode->next=l1;
newnode=l1;
l1=l1->next;
}
}
if(l1==NULL) //如果l1遍历完
{
newnode->next=l2; //将l2剩余部分连接到之后
}
else
{
newnode->next=l1;
}
return combine.next;
}
};