鏈表習題(7)-將兩個遞增單鏈表合並成一個遞減單鏈表


 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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM