合並兩個升序鏈表為一個升序鏈表


 1 typedef struct Node
 2 {
 3     int Data;
 4     struct Node *Next;
 5 }Node, *List;
 6 
 7 List Merge(List L1, List L2)
 8 
 9 {
10     List t1, t2, Ptr, L;
11     if (L1 == NULL && L2 == NULL)
12         return NULL;
13     else if (L1 == NULL)
14         return L2;
15     else if (L2 == NULL)
16         return L1;
17 
18     t1 = L1->Next;//指向第一個節點
19     t2 = L2->Next;
20 
21     //構造一個帶頭結點的空鏈表
22     L = (List)malloc(sizeof(struct Node));
23     L->Next = NULL;
24 
25     Ptr = L;//指向新鏈表的頭節點
26 
27     while (t1 && t2)
28     {
29         if (t1->Data <= t2->Data)//比較兩個鏈表的值 將較小的加入新鏈表
30         {
31             Ptr->Next = t1;
32             Ptr = t1;
33 
34             t1 = t1->Next;
35             Ptr->Next = NULL;
36 
37         }
38         else
39         {
40             Ptr->Next = t2;
41             Ptr = t2;
42             t2 = t2->Next;
43             Ptr->Next = NULL;
44 
45         }
46     }
47 
48     while (t1)
49     {
50         Ptr->Next = t1;
51         Ptr = t1;
52         t1 = t1->Next;
53         Ptr->Next = NULL;
54 
55     }
56 
57     while (t2)
58     {
59         Ptr->Next = t2;
60         Ptr = t2;
61         t2 = t2->Next;
62         Ptr->Next = NULL;
63 
64     }
65 
66     L1->Next = NULL;
67     L2->Next = NULL;
68 
69     return L;
70 }

 


免責聲明!

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



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