【剑指offer-解题系列(16)】合并两个排序的列表

来源:互联网 发布:java简历项目收获 编辑:程序博客网 时间:2024/06/07 19:17


题目描述

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
分析
纯手动工程实现问题,原理上没有什么复杂的。
代码实现
    ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
    {
        if(pHead1==NULL )
            return pHead2;
        if(pHead2==NULL )
            return pHead1;
        ListNode*p =pHead1;
        ListNode*q =pHead2;
        if(pHead1->val > pHead2->val){
            swap(p,q);
        }
        ListNode*h =p;
        while(q!=NULL){
            while(p->next!=NULL  &&  p->next->val<q->val ){
                p=p->next;
                //insert after p
            }
            //insert
            ListNode*tmp = p->next ;
            p->next = q;
            q=q->next;
            p->next->next = tmp;
        }        
        return h;        
    }
原创粉丝点击