21. 合并两个有序链表(c++0

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
        ListNode* p=l1;//标记l1的头位置
        ListNode* q=l2;//标记l2的头位置
        ListNode* result=new ListNode(0);//创建返回列表的头节点
        ListNode* r=result;//返回链表的尾节点
        while(p&&q)
        {
            if(q->val>p->val)
            {
                r->next=p;
                r=r->next;
                p=p->next;
            }
            else
            {
                r->next=q;
                r=r->next;
                q=q->next;
            }
        }
        if(q)
            r->next=q;
        if(p)
            r->next=p;
        return result->next;
}
 
 
 
 
原文地址:https://www.cnblogs.com/one-think/p/12497516.html