合并两个有序链表

输入两个单调递增的链表,输出两个链表合成后的链表,合成后的链表需要满足单调不减规则

思路:谁小取谁,谁小谁动
步骤:
1.定义指针:p1,p2用来分别遍历两个链表;定义一个p,一个pHead,一个进行存数,一个用来最终返回
2.初始化p:取两个链表头结点中的较小值(别忘了让那个指针后移)
3.循环比较两个链表元素,谁小就取谁,谁小就往后移动,直到某一个链表到了尾巴
4.p再去加上另一个链表的剩余部分

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
public:
    ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
    {
        if(pHead1==NULL)
            return pHead2;
        if(pHead2==NULL)
            return pHead1;
        ListNode* p1=pHead1;
        ListNode* p2=pHead2;
        ListNode* p=NULL;
        if(p1->val<p2->val)
        {
            p=p1;
            p1=p1->next;
        }
        else
        {
            p=p2;
            p2=p2->next;
        }
         ListNode* pHead=p;
        while(p1!=NULL&&p2!=NULL)
        {
            if(p1->val<p2->val)
            {
                p->next=p1;
                p=p->next;
                p1=p1->next;
            }
            else
            {
                p->next=p2;
                p=p->next;
                p2=p2->next;
            }
        }
        if(p1!=NULL)
            p->next=p1;
        if(p2!=NULL)
            p->next=p2;
        return pHead;
    }
};
全部评论

相关推荐

小叮当411:应该是1-3个月吧
点赞 评论 收藏
分享
06-23 11:28
门头沟学院 Java
牛客91966197...:也有可能是点拒绝的时候自动弹的话术
点赞 评论 收藏
分享
自学java狠狠赚一...:骗你点star的,港卵公司,记得把star收回去
点赞 评论 收藏
分享
07-03 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务