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

A与B链表合并成C链表(链表的归并)

时间:2019-09-12 21:22:25      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:data   掌握   bsp   指针   链表   void   最小值   C链表   nbsp   

A与B链表合并成C链表(链表的归并)

已知两个有序递增A链表和B链表(非空),将两个链表合并为C链表(同为递增有序),需要我们对链表的概念有一定掌握

对节点所需条件以及节点之间建立关系有所掌握。

这个题的重点是,并没有说明两个链表的具体长度,即两个链表可能不一样长,所以,在处理的时候需要注意,当某一个链表

操作完毕,另一个链表剩下的部分则可以直接接入C链表当中。

 1 void merge(LNode *A,LNode *B,LNode *C)
 2 {
 3     LNode *p = A->next;        //p来跟踪A的最小值节点,
 4     LNode *q = B->next;        //q来跟踪B的最小值节点
 5     LNode *r;                //定义一个指针,用作C链表的游标
 6     C = A;                    //C指向A链表的头结点
 7     C->next = NULL;            //这里可以去掉,因为下面两个if必须有一个执行
 8     free(B);                //释放掉B头结点
 9     r = C;                    //游标指向C头结点
10     while(p!=NULL && q!=NULL)        //当两个链表其中一个没有到达最后
11     {
12         if(p->data <= q->data)
13         {
14             r->next = p;
15             p = p->next;
16             r = r->next;
17         }
18         else{
19             r->next = q;
20             q = q->next;
21             r = r->next;
22         }
23     }
24     r->next = NULL;            //C链表最后next指针指向空
25     
26     if(p!=NULL){
27         r->next = p;
28     }
29     if(q!=NULL)
30         r->next = q;
31 }

 

A与B链表合并成C链表(链表的归并)

标签:data   掌握   bsp   指针   链表   void   最小值   C链表   nbsp   

原文地址:https://www.cnblogs.com/whtmomo/p/11515106.html

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