165. 合并两个排序链表
将两个排序链表合并为一个新的排序链表
样例
样例 1:
输入: list1 = null, list2 = 0->3->3->null
输出: 0->3->3->null
样例2:
输入: list1 = 1->3->8->11->15->null, list2 = 2->null
输出: 1->2->3->8->11->15->null
ListNode * mergeTwoLists(ListNode * l1, ListNode * l2) {
// write your code here
ListNode * head= nullptr;
ListNode * p1 = l1;
ListNode * p2 = l2;
if(p1==nullptr & p2 != nullptr)
{
return p2;
}
if(p1!=nullptr & p2 == nullptr)
{
return p1;
}
if(p1==nullptr & p2 == nullptr)
{
return nullptr;
}
if(p1->val > p2->val)
{
head = p2;
p2 = p2->next;
}
else
{
head = p1;
p1 = p1->next;
}
ListNode * p3 = head;
while(p1!=nullptr && p2!= nullptr)
{
if(p1->val > p2->val)
{
p3->next = p2;
p2 = p2->next;
p3= p3->next;
}
else
{
p3->next = p1;
p1 = p1->next;
p3= p3->next;
}
}
if(p1!= nullptr)
{
p3->next = p1;
}
if(p2!= nullptr)
{
p3->next = p2;
}
return head;
}