合并两个升序链表为一个升序链表


 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