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

算法题——合并两条有序的链表

时间:2014-08-17 03:47:49      阅读:285      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   strong   div   代码   amp   时间   

题目:给定两个已排序的链表,返回合并后的链表。

 

思路:将链表L2的每个结点插入到链表L1中,时间复杂度为O(m+n),m、n分别为两条链表的长度。

 

代码

 1 struct ListNode
 2 {
 3     int value;
 4     ListNode *next;
 5     ListNode(int v): value(v), next(NULL)
 6     {
 7     }
 8 };
 9 
10 ListNode *mergeSortedList(ListNode *L1, ListNode *L2)
11 {
12     ListNode dummy(-1), *p1 = &dummy, *p2 = L2;  //L1的辅助头结点dummy,因为可能在头部插入
13     dummy.next = L1;
14     while(p1->next != NULL && p2 != NULL)  //停止条件,也包括了判断两个链表是否为空
15     {
16         if(p1->next->value >= p2->value)
17         {
18             L2 = p2->next;
19             p2->next = p1->next;
20             p1->next = p2;
21             p1 = p2;
22             p2 = L2;
23         }
24         else
25         {
26             p1 = p1->next;
27         }
28     }
29     if(p1->next == NULL)    //L2可能还有未处理的结点,直接加在L1尾部即可
30     {
31         p1->next = p2;
32     }
33 
34     return dummy.next;
35 }

 

算法题——合并两条有序的链表,布布扣,bubuko.com

算法题——合并两条有序的链表

标签:style   blog   color   strong   div   代码   amp   时间   

原文地址:http://www.cnblogs.com/qieerbushejinshikelou/p/3917302.html

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