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 }
原文地址:https://www.cnblogs.com/KBryant/p/11650007.html
时间: 2024-10-11 17:45:06