牛客网 合并两个排序的链表

题目链接:合并两个排序的链表_牛客题霸_牛客网 (nowcoder.com)

代码(C++)(双指针法):

#include <cstdlib>
class Solution {
public:
    ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {
        ListNode *p = pHead1,*q = pHead2,*s = new ListNode(0);//新开结点1,指针指向NULL;此时结点的VAL值为0
        s->val = -1;
        ListNode *r = s;
        if (!p) return q;
        if (!q) return p;
        while(p != nullptr && q != nullptr){
            if(p->val >= q->val){
                r->next = q;
                q = q->next;
            }else{
                r->next = p;;
                p = p->next;
            }
            r = r->next;
        }
        r->next = p ? p : q;
        return s->next;
    }
};

 

代码(C++)(递归法):

#include <cstdlib>
class Solution {
public:
    ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {
        ListNode *p = pHead1,*q = pHead2;
        if(!p) return q;
        if(!q) return p;
        if(p->val <= q->val){
            p->next = Merge(p->next, q);
            return p;
        }else{
            q->next = Merge(q->next, p);
            return q;
        }
    }
};

 

posted @ 2023-06-15 22:00  弈星  阅读(17)  评论(0)    收藏  举报