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
1 /**
2 * Definition for singly-linked list.
3 * struct ListNode {
4 * int val;
5 * ListNode *next;
6 * ListNode(int x) : val(x), next(NULL) {}
7 * };
8 */
9 class Solution {
10 public:
11 ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
12 ListNode* newHead = new ListNode(-1);
13 ListNode* tail = newHead;
14
15 while(l1 != NULL && l2 != NULL)
16 {
17 if(l1->val <= l2->val){
18 tail->next = l1;
19 l1 = l1->next;
20 }
21 else{
22 tail->next = l2;
23 l2 = l2->next;
24 }
25 tail =tail->next;
26 }
27 if(l1 != NULL){
28 tail->next = l1;
29 }else if(l2 != NULL){
30 tail->next = l2;
31 }
32 return newHead->next;
33 }
34 };