题目描述

输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。

示例1:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4

固定头结点fix作为结果的头结点,p遍历
比较每个结点的大小,小于时跟在p后面

class Solution {
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
        ListNode* fix=new ListNode(-1);//固定头结点
        ListNode* p=fix;//负责遍历
        while(l2&&l1){
            if(l1&&l2&&l1->val<=l2->val) {//那边小就把它放在p后面,不重新生成结点
                p->next=l1;
                l1=l1->next;
            }
            else if(l1&&l2&&l1->val>l2->val) {
                p->next=l2;
                l2=l2->next;
            }
            p=p->next;
        }
        if(l1) p->next=l1;//直接l1即可,不需要写while循环
        if(l2) p->next=l2;
        return fix->next;//输出头结点的下一位
    }
};