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 }