首页 > 其他 > 详细

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

时间:2020-05-16 12:16:04      阅读:46      评论:0      收藏:0      [点我收藏+]
 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 }

 

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

原文:https://www.cnblogs.com/menlancholyyolk/p/12899408.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!