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.

Example:

Input: 1->2->4, 1->3->4
Output: 1->1->2->3->4->4

Those of you who are using the textbook should note that the linked list in the book has a header, and in this case, there is no header

/**
  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* L1 = l1;
        ListNode* L2= l2;
        ListNode* head = new ListNode(0);
        ListNode* L3 = head;
        while(L1 != NULL && L2 != NULL){
            if(L1->val > L2->val){
                L3->next = L2;
                L3 = L2;
                L2 = L2->next;
            }else{
                L3->next = L1;
                L3 = L1;
                L1 = L1->next;
            }
        }
        if(L1 != NULL){
            L3->next = L1;
        }
        if(L2 != NULL){
            L3->next = L2;
        }
        return head->next;
    }
};