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

将两个有序链表合并,合并后仍然有序

时间:2018-09-25 12:37:58      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:循环   free   amp   klist   nbsp   link   归并   lis   str   

 

思路:因为A,B链表中元素有序,要使归并后的C也有序,可以每次从A、B中挑出最小的元素插入C的尾部,这样循环插入完成后,C也一定是有序的。

 1 struct LinkList{
 2     int data;
 3     LinkList *next;
 4 }
 5 
 6 void Merge(LinkList *A,LinkList *B,LinkList *&C)
 7 {
 8     LinkList *p = A->next;    // 定义p结点跟踪 A中的结点
 9     LinkList *q = B->next;    // 定义q结点跟踪 B中的结点
10 
11     C = A;
12     C->next = NULL;
13     free(B);
14     
15     LinkList *r = C;   //  定义一个跟踪结点,永远指向C的终端结点
16     
17     while(p!=NULL&&q!=NULL){
18         if(p->data <= q->data){
19             r->next = p;
20             p = p->next;
21             r = r->next;
22         }else{
23             r->next = q;
24             q = q->next;
25             r = r->next;
26         }
27     }
28 
29     if(p!=NULL) r->next = p;
30     if(q!=NULL) r->next = q;
31 }

 

将两个有序链表合并,合并后仍然有序

标签:循环   free   amp   klist   nbsp   link   归并   lis   str   

原文地址:https://www.cnblogs.com/ll-10/p/9698815.html

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