两个已排序链表的合并
luyued 发布于 2011-03-23 15:48 浏览 N 次
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 }
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 }
上一篇:高分找歌曲 给链接 下一篇:2010年全市公办小学五年级习作竞赛获奖通报2
相关资讯
- 07-01· 禁教唐诗算术能还幼儿快
- 07-01· 2011年06月17日
- 07-01· 唐诗宋词英译:李商隐 筹
- 07-01· 仿评《唐诗1000首》第186首
- 07-01· 没事干的时候背背唐诗吧
- 07-01· [转载]唐诗中“斜”字该读
- 07-01· 湖南醴陵瓷业转型升级
- 07-01· 奇瑞风云2两厢黑色|2010款
- 07-01· 摩根士丹利华鑫摩根士丹
- 07-01· 摩根士丹利华鑫近期优选
图文资讯
最新资讯
- 07-01· 中金投行部大摩出售中金
- 07-01· 摩根士丹利招聘6月2日【实
- 07-01· 营养防病圣典
- 07-01· 《博伽梵歌原意》之第十
- 07-01· [不错]斑斓圣典---减肥中常
- 07-01· 武乐圣典《太极武当》:武
- 07-01· 铁血英雄-现阶段战功牌兑
- 07-01· 2011年06月10日【原创】南歌
- 07-01· 【淘宝网信息】- 2010年的
- 07-01· 深圳品牌女装有哪些?