165. 合并两个排序链表

165. 合并两个排序链表
 

将两个排序链表合并为一个新的排序链表
样例

样例 1:
    输入: list1 = null, list2 = 0->3->3->null
    输出: 0->3->3->null


样例2:
    输入:  list1 =  1->3->8->11->15->null, list2 = 2->null
    输出: 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;
        
    }

猜你喜欢

转载自blog.csdn.net/yinhua405/article/details/111879413
今日推荐