链表习题-将两个递增单链表合并成一个递减单链表
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 }
以上是关于链表习题-将两个递增单链表合并成一个递减单链表的主要内容,如果未能解决你的问题,请参考以下文章
设A和B是两个按元素值递增有序的单链表,写一算法将A和B归并为按按元素值递减有序的单链表C,试分析算法的时间复杂度。(利用上篇带有头结点的线性链表操作)