标签:
对于两个有序链表合并成一个新的有序链表的代码很简单,但是要注意一些测试用例:
比如说一个为空链表;两个链表不一样长,肯定最后有一个链表要单独的挂到结果链表中去的。
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2)
{
if(l1 == NULL)
return l2;
if(l2 == NULL)
return l1;
ListNode dummy(-1);
ListNode *p = &dummy;
while(l1 != NULL && l2 != NULL)
{
if(l1->val < l2->val)
{
p->next = l1;
p = p->next;
l1 = l1->next;
p->next = NULL;
}
else
{
p->next = l2;
p = p->next;
l2 = l2->next;
p->next = NULL;
}
}//while
p->next = l1 == NULL ? l2 : l1;
return dummy.next;
}
注意程序中用到了一个头结点,这个头结点就是为了链表插入的方便,真正返回的时候还是放回的dummy.next。
标签:
原文地址:http://www.cnblogs.com/stemon/p/4683373.html