为什么在对两个空链表进行归并排序的时候会出现{0}

代码如下:

struct ListNode* Merge(struct ListNode* pHead1, struct ListNode* pHead2 ) {
struct ListNode *res = (struct ListNode *)malloc(sizeof(struct ListNode *)), *p;

p = res;

while(pHead1!=NULL && pHead2!=NULL){
    if(pHead1->val>=pHead2->val){
        p->next = pHead2;

        pHead2 = pHead2->next;

        p = p->next;

    }else{
        p->next = pHead1;

       pHead1 = pHead1->next;

        p = p->next; 

    }

if(pHead1!=NULL){
    p->next =pHead1;

}else{
    p->next =pHead2;

}

}



return res->next;

}

改动处见注释,供参考:

struct ListNode* Merge(struct ListNode* pHead1, struct ListNode* pHead2 ) {
    struct ListNode *res = (struct ListNode *)malloc(sizeof(struct ListNode *)), *p;
    p = res;
    while(pHead1!=NULL && pHead2!=NULL){
        if(pHead1->val>=pHead2->val){
            p->next = pHead2;
            pHead2 = pHead2->next;
            p = p->next;
        }else{
            p->next = pHead1;
            pHead1 = pHead1->next;
            p = p->next;
        }
    } // whiel(){} 修改
    if(pHead1!=NULL){
        p->next =pHead1;
    }else{
        p->next =pHead2;
    }
    //}  修改
    return res->next;
}