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程序:编写实现将两个已知的有序链表合并成一个有序链表的函数。
两个有序链表归并的程序出了问题,麻烦懂得人帮忙看看好么?谢谢!