链表习题-将两个递增单链表合并成一个递减单链表

Posted William_Goodman

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链表习题-将两个递增单链表合并成一个递减单链表相关的知识,希望对你有一定的参考价值。

 1 /*将两个递增单链表合并成一个递减单链表*/
 2 /*
 3     算法思想:两个链表已经按元素值递增次序排序,将其合并时,均从第一个结点起进行比较,将较小的
 4     结点链入链表中,同时后移工作指针。由于结果链表是递减的,故使用头插法建立新链表。比较结束后,
 5     可能会有一个链表非空,此时用头插法将剩下的结点依次插入新链表中即可。
 6 */
 7 void Union_List(LinkList& La,LinkList& Lb)
 8 {
 9     LNode *r, *pa = La->next, *pb = Lb->next;    //pa,pb分别是La,Lb的工作指针
10     La->next = NULL;        //将La作为结果链表的头指针
11     while (pa&&pb)
12     {
13         if (pa->data <= pb->data)
14         {
15             r = pa->next;        //r暂存pa的后继结点指针
16             pa->next = La->next;        //头插法插入pa所指结点
17             La->next = pa;
18             pa = r;
19         }
20         else
21         {
22             r = pb->next;
23             pb->next = La->next;
24             La->next = pb;
25             pb = r;
26         }
27         while (pa)        //处理剩下的结点
28         {
29             r = pa->next;        
30             pa->next = La->next;    
31             La->next = pa;
32             pa = r;
33         }
34         while (pb)        
35         {
36             r = pb->next;
37             pb->next = La->next;
38             La->next = pb;
39             pb = r;
40         }
41     }
42     free(Lb);
43 }

 

以上是关于链表习题-将两个递增单链表合并成一个递减单链表的主要内容,如果未能解决你的问题,请参考以下文章

两个递增有序的单链表,设计算法成一个非递减有序的链表

两个递增有序的单链表,设计算法成一个非递减有序的链表

两个有序单链表合并成一个有序单链表的java实现

设A和B是两个按元素值递增有序的单链表,写一算法将A和B归并为按按元素值递减有序的单链表C,试分析算法的时间复杂度。(利用上篇带有头结点的线性链表操作)

C语言单链表合并

归并链表(简单方法)