//虚拟一个头节点,然后将两个单链表中较小的值赋给当前节点的下一个节点 //虚拟的头节点list //定义一个cur用来指向当前的虚拟头节点

public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode Merge(ListNode list1,ListNode list2) {
        //定义一个虚拟头节点
        ListNode list=new ListNode(-1);
        ListNode cur=list;
        
        while(list1!=null&&list2!=null)
        {

        if(list1.val>list2.val)
        {
            cur.next=list2;
            list2=list2.next;
        }
            else{
                cur.next=list1;
                list1=list1.next;
            }
            //重要
            cur=cur.next;
        }
        //最后把剩下的list1或list2加入到合并的链表中
        if(list1!=null)
        {
            cur.next=list1;
        }
        if(list2!=null)
        {
            cur.next=list2;
        }
        return list.next;
    }
}