/**
 * link: https://leetcode.com/problems/merge-two-sorted-lists/
 * 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.
 */
 
 
/**
 * 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)
    {
        if (l1 == NULL)
            return l2;
        if (l2 == NULL)
            return l1;

        ListNode *head;
        ListNode *current = head = NULL;
        while (l1 && l2)
        {
            if (l1->val <= l2->val)
            {
                if (current == NULL)
                {
                    current = head = l1;
                }
                else
                {
                    current->next = l1;
                    current = current->next;
                }
                l1 = l1->next;
            }
            else
            {
                if (current == NULL)
                {
                    current = head = l2;
                }
                else
                {
                    current->next = l2;
                    current = current->next;
                }
                l2 = l2->next;
            }
            current->next = NULL;
        }

        if (l2)
            current->next = l2;
        if (l1)
            current->next = l1;
        return head;
    }
};

Add solution for 21. Merge Two Sorted Lists.
Add solution for 21. Merge Two Sorted Lists.