将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4
class Solution
{
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2)
{
ListNode *head1 = l1;
ListNode *head2 = l2;
ListNode *head = NULL;
ListNode *lastNode = NULL;
while(head1 && head2)
{
if(head1 ->val < head2 ->val)
{
if(!head)
{
head = new ListNode(head1 ->val);
lastNode = head;
}
else
{
ListNode *temp = new ListNode(head1 ->val);
lastNode ->next = temp;
lastNode = lastNode ->next;
}
head1 = head1 ->next;
}
else
{
if(!head)
{
head = new ListNode(head2 ->val);
lastNode = head;
}
else
{
ListNode *temp = new ListNode(head2 ->val);
lastNode ->next = temp;
lastNode = lastNode ->next;
}
head2 = head2 ->next;
}
}
if(!head1)
{
while(head2)
{
if(!head)
{
head = new ListNode(head2 ->val);
lastNode = head;
}
else
{
ListNode *temp = new ListNode(head2 ->val);
lastNode ->next = temp;
lastNode = lastNode ->next;
}
head2 = head2 ->next;
}
}
else if(!head2)
{
while(head1)
{
if(!head)
{
head = new ListNode(head1 ->val);
lastNode = head;
}
else
{
ListNode *temp = new ListNode(head1 ->val);
lastNode ->next = temp;
lastNode = lastNode ->next;
}
head1 = head1 ->next;
}
}
return head;
}
};