【leetcode】-21-升序合并两个有序单链表

之前王道上有一个题目是按照逆序合并两个单链表,只需要在下面这个题目的基础上改成头插即可

https://blog.csdn.net/qq_39328436/article/details/107473409

【方法一:前后指针+头结点+尾插】

ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
        if(l1==nullptr) return l2;
        if(l2==nullptr) return l1;

        ListNode *L=new ListNode();
        L->next=nullptr;//创建一个头结点
        ListNode *tail=L;
        ListNode *p=l1,*q=l2,*p_n=p->next,*q_n=q->next;

        while(p!=nullptr&&q!=nullptr)
        {
            if(p->val<=q->val){
                tail->next=p;
                p_n=p->next;
                p->next=nullptr;
                tail=tail->next;
                 p=p_n;
            }else{
                tail->next=q;
                q_n=q->next;
                q->next=nullptr;
                tail=tail->next;
                 q=q_n;
            }     
        }
        if(p!=nullptr)tail->next=p;//谁剩下了就谁直接放在队尾
        if(q!=nullptr)tail->next=q;
        return L->next;
    }

猜你喜欢

转载自blog.csdn.net/qq_39328436/article/details/113705385