题解 | #合并两个排序的链表#

合并两个排序的链表

http://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337

    struct ListNode* Merge(struct ListNode* pHead1, struct ListNode* pHead2 ) {
           struct ListNode *p= pHead1;
           struct ListNode *q= pHead2;
    struct ListNode *r=(struct ListNode*)malloc(sizeof(struct ListNode));//创建一个头节点
    struct ListNode *head =r;//创建一个指向r的指针 方便后面return
        while(p!=NULL&&q!=NULL){
                if(p->val<=q->val){//跟着指针走 始终让r能在最前面
             r->next=p;
             p=p->next;
             r=r->next;}
        else{
            r->next=q;
            q=q->next;
            r=r->next;
        }
    }
    r->next=NULL;
    if(p!=NULL)r->next=p;//比较完之后 表中还有剩下的数可以直接接上
    if(q!=NULL)r->next=q;
    return head->next;//一开始就忘记还要return了
    }
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务