165. Merge two sorted linked lists

165. Merge two sorted linked lists
 

Combine two sorted linked lists into a new sorted linked list
example

Example 1:
    Input: list1 = null, list2 = 0->3->3->null
    Output: 0->3->3->null


Example 2:
    Input: list1 = 1->3->8->11->15->null, list2 = 2->null
    Output: 1->2->3->8->11->15- >null

 

 ListNode * mergeTwoLists(ListNode * l1, ListNode * l2) {
        // write your code here
        ListNode * head= nullptr;
        
        ListNode * p1 = l1;
        ListNode * p2 = l2;
        
        if(p1==nullptr & p2 != nullptr)
        {
            return p2;
        }
        if(p1!=nullptr & p2 == nullptr)
        {
            return p1;
        }
        if(p1==nullptr & p2 == nullptr)
        {
            return nullptr;
        }
        
        if(p1->val > p2->val)
        {
            head = p2;
            p2 = p2->next;
        }
        else
        {
            head = p1;
            p1 = p1->next;
        }
        ListNode * p3 = head;
        
        while(p1!=nullptr && p2!= nullptr)
        {
            if(p1->val > p2->val)
            {
                p3->next = p2;
                p2 = p2->next;
                p3= p3->next;
            }
            else
            {
                p3->next = p1;
                p1 = p1->next;
                p3= p3->next;
            }
        }
        
        if(p1!= nullptr)
        {
            p3->next = p1;
        }
        if(p2!= nullptr)
        {
            p3->next = p2;
        }
        
        return head;
        
    }

 

Guess you like

Origin blog.csdn.net/yinhua405/article/details/111879413