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.
分析:思路比较简单,遍历两个有序链表,每次指向最小值。
code如下:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) { ListNode *h = new ListNode(0), *p = h; while(l1 != NULL && l2 != NULL) { if(l1 -> val < l2 -> val) { p -> next = l1; l1 = l1 -> next; } else { p -> next = l2; l2 = l2 -> next; } p = p -> next; } if(l1 != NULL) p -> next = l1; if(l2 != NULL) p -> next = l2; return h -> next; } };