码迷,mamicode.com
首页 > 其他好文 > 详细

有序链表的合并

时间:2015-07-28 17:55:25      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:

对于两个有序链表合并成一个新的有序链表的代码很简单,但是要注意一些测试用例:

比如说一个为空链表;两个链表不一样长,肯定最后有一个链表要单独的挂到结果链表中去的。

 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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!