Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
Tags:Linked List
Similar Problems: (H) Merge k Sorted Lists (E) Merge Sorted Array (M) Sort List (M) Shortest Word Distance II
1 struct ListNode { 2 int val; 3 ListNode *next; 4 ListNode(int x) : val(x), next(NULL) {} 5 }; 6 class Solution { 7 public: 8 ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { 9 if (NULL == l1) 10 { 11 return l2; 12 } 13 else if (NULL == l2) 14 { 15 return l1; 16 } 17 ListNode *pHead = NULL; 18 ListNode *pt = NULL; 19 while (NULL != l1 && NULL != l2) 20 { 21 if (l1->val > l2->val) 22 { 23 if (pt == NULL) 24 { 25 pt = l2; 26 } 27 else 28 { 29 pt->next = l2; 30 pt = l2; 31 } 32 l2 = l2->next; 33 pt->next = NULL; 34 if(NULL == pHead) 35 { 36 pHead = pt; 37 } 38 } 39 else 40 { 41 if (pt == NULL) 42 { 43 pt = l1; 44 } 45 else 46 { 47 pt->next = l1; 48 pt = l1; 49 50 } 51 l1 = l1->next; 52 pt->next = NULL; 53 if(NULL == pHead) 54 { 55 pHead = pt; 56 } 57 else 58 { 59 60 } 61 } 62 } 63 if (NULL != l1) 64 { 65 while(NULL != l1) 66 { 67 pt->next = l1; 68 pt = l1; 69 l1 = l1->next; 70 pt->next = NULL; 71 } 72 } 73 else 74 { 75 while(NULL != l2) 76 { 77 pt->next = l2; 78 pt = l2; 79 l2 = l2->next; 80 pt->next = NULL; 81 } 82 } 83 return pHead; 84 } 85 };
原文:http://www.cnblogs.com/whl2012/p/5595202.html