周梦康 发表于 2015-06-22 2523 次浏览 标签 : 计算机基础剑指 offer数据结构

输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。例如输入图中的链表1和链表2,则合并之后的升序链表如链表3所示。

合并两个排序的链表

struct ListNode{
    int m_nValue;
    ListNode* m_pNext;
};

ListNode* Merge(ListNode* pHead1,ListNode* pHead2){
    if(pHead1 == NULL){
        return pHead2;
    }else if(pHead2 == NULL){
        return pHead1;
    }

    ListNode* pMergerHead = NULL;

    if(pHead1->m_nValue < pHead2->m_nValue){
        pMergerHead = pHead1;
        pMergerHead->m_pNext = Merge(pHead1->m_pNext,pHead2);
    }else{
        pMergerHead = pHead2;
        pMergerHead->m_pNext = Merge(pHead2->m_pNext,pHead1);
    }

    return pMergerHead;

}

评论列表