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

Posted whtmomo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了A与B链表合并成C链表(链表的归并)相关的知识,希望对你有一定的参考价值。

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链表(链表的归并)的主要内容,如果未能解决你的问题,请参考以下文章

c程序:编写实现将两个已知的有序链表合并成一个有序链表的函数。

两个有序链表归并的程序出了问题,麻烦懂得人帮忙看看好么?谢谢!

链表的合并

链表的合并

Java实现两个递增有序链表合并成一个递增有序链表和两个非递减有序链表合成一个非递增有序链表

多路归并