将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
输出:1->1->2->3->4->4
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode* p=l1;//标记l1的头位置
ListNode* q=l2;//标记l2的头位置
ListNode* result=new ListNode(0);//创建返回列表的头节点
ListNode* r=result;//返回链表的尾节点
while(p&&q)
{
if(q->val>p->val)
{
r->next=p;
r=r->next;
p=p->next;
}
else
{
r->next=q;
r=r->next;
q=q->next;
}
}
if(q)
r->next=q;
if(p)
r->next=p;
return result->next;
}
ListNode* p=l1;//标记l1的头位置
ListNode* q=l2;//标记l2的头位置
ListNode* result=new ListNode(0);//创建返回列表的头节点
ListNode* r=result;//返回链表的尾节点
while(p&&q)
{
if(q->val>p->val)
{
r->next=p;
r=r->next;
p=p->next;
}
else
{
r->next=q;
r=r->next;
q=q->next;
}
}
if(q)
r->next=q;
if(p)
r->next=p;
return result->next;
}