剑指 Offer 25. 合并两个排序的链表

输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。

示例1:

输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4

1.迭代

class Solution 
{
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) 
    {
        ListNode* prehead=new ListNode(-1);
        ListNode* prev=prehead;
        while(l1!=nullptr&&l2!=nullptr)
        {
            if(l1->valval)
            {
                prev->next=l1;
                l1=l1->next;
            }
            else
            {
                prev->next=l2;
                l2=l2->next;
            }
            prev=prev->next;
        }
       prev->next=l1==nullptr?l2:l1;
        return prehead->next;
    }
};

2.递归

class Solution 
{
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) 
    {
        if(l1==nullptr)
        {
            return l2;
        }
        else if(l2==nullptr)
        {
            return l1;
        }
        else
        {
            if(l1->valval)
            {
                l1->next=mergeTwoLists(l1->next,l2);
                return l1;
            }
            else
            {
                l2->next=mergeTwoLists(l1,l2->next);
                return l2;
            }
        }
    }
};

你可能感兴趣的:(c++,数据结构,链表)