您的位置:首页 > 其它

两个已排序链表的合并

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: