LintCode :合并两个排序链表
题目
将两个排序链表合并为一个新的排序链表
样例
给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。
思路
就是跟合并两个排列数组一样,别忘了最后处理剩下的。
代码
ListNode *mergeTwoLists(ListNode *l1, ListNode *l2)
{
if(l1 == NULL)
return l2;
if(l2 == NULL)
return l1;
ListNode *p1 = l1;
ListNode *p2 = l2;
ListNode *head = new ListNode(p1->val < p2->val ? p1->val : p2->val);
ListNode *q = head;
if(p1->val < p2->val)
p1 = p1->next;
else
p2 = p2->next;
while(p1 != NULL && p2 != NULL)
{
if(p1->val < p2->val)
{
ListNode *l = new ListNode(p1->val);
q->next = l;
q = q->next;
p1 = p1->next;
}
else
{
ListNode *l = new ListNode(p2->val);
q->next = l;
q = q->next;
p2 = p2->next;
}
}
while(p1 == NULL && p2 != NULL)
{
ListNode *l = new ListNode(p2->val);
q->next = l;
q = q->next;
p2 = p2->next;
}
while(p2 == NULL && p1 != NULL)
{
ListNode *l = new ListNode(p1->val);
q->next = l;
q = q->next;
p1 = p1->next;
}
return head;
}