两个已排序链表的合并
2011-04-29 21:56
351 查看
1 typedef struct Node{
2 int data;
3 struct Node* next;
4 }Node, *LinkList;
5 void Merge(LinkList la, LinkList lb, LinkList &lc)
6 {
7 // NULL检测
8 if(!la) {lc = pb; return;}
9 if(!lb) {lc = pa; return;}
10 Node* p;
11
12 // 确定最大值在la上, 还是lb上
13 if(la.data > lb.data) { lc = p = la; la = la->next; }
14 else { lc = p = lb; lb = lb->next; }
15
16 while(la &&lb)
17 {
18 if(la.data > lb.data)
19 {
20 p->next = la;
21 la = la->next;
22 }else if(la.data < lb.data)
23 {
24 p->next = lb;
25 lb = lb->next;
26 }else{ // la 与 lb中值相等的情况
27 p->next = la;
28 la = la->next;
29 Node* tmp = lb;
30 lb = lb->next;
31 free(tmp);
32 }
33 p = p->next;
34 }
35 // 剩余部分链表的挂接
36 p->next = (la ? la:lb);
37 }
FROM:
http://fz.okpinpai.net/nvzhuang/201103/2373044.html
2 int data;
3 struct Node* next;
4 }Node, *LinkList;
5 void Merge(LinkList la, LinkList lb, LinkList &lc)
6 {
7 // NULL检测
8 if(!la) {lc = pb; return;}
9 if(!lb) {lc = pa; return;}
10 Node* p;
11
12 // 确定最大值在la上, 还是lb上
13 if(la.data > lb.data) { lc = p = la; la = la->next; }
14 else { lc = p = lb; lb = lb->next; }
15
16 while(la &&lb)
17 {
18 if(la.data > lb.data)
19 {
20 p->next = la;
21 la = la->next;
22 }else if(la.data < lb.data)
23 {
24 p->next = lb;
25 lb = lb->next;
26 }else{ // la 与 lb中值相等的情况
27 p->next = la;
28 la = la->next;
29 Node* tmp = lb;
30 lb = lb->next;
31 free(tmp);
32 }
33 p = p->next;
34 }
35 // 剩余部分链表的挂接
36 p->next = (la ? la:lb);
37 }
FROM:
http://fz.okpinpai.net/nvzhuang/201103/2373044.html
相关文章推荐
- 17.合并两个排序的链表|剑指Offer
- 165. 合并两个排序链表(merge-two-sorted-lists)(c++)----lintcode面试题之链表
- 剑指offer——合并两个排序的链表__
- 题目1519:合并两个排序的链表 九度 本地通过 参考别人的
- 14--合并两个排序的链表
- 剑指Offer----面试题17:合并两个排序的链表
- 合并两个排序的链表
- 面试题17:合并两个排序的链表
- 合并两个排序的链表(面试题17)
- lintcode——合并两个排序链表
- 合并两个排序的链表
- 合并两个排序的链表
- 剑指offer第16题(合并两个排序的链表)
- [剑指offer]合并两个排序的链表
- 剑指offer——面试题17:合并两个排序的链表
- leetcode 21. Merge Two Sorted Lists(C语言,合并两个排序的链表为一个排序链表)32
- 剑指offer面试题17 合并两个排序的链表
- 剑指Offer--面试题17:合并两个排序的链表--Java实现
- 合并两个排序链表-LintCode
- 合并两个排序的链表