/*
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 head = new ListNode(0);
            ListNode newHead  = head;

        //比较两个链表的值
        //将比较的两个值小的一个赋值movnode.next
        //复制给movnode.next 的原因是 要满足单调不减规则

        //两个链表都没走完的情况进行比较
        while(list1!=null&&list2!=null){
            if(list1.val>list2.val){
               newHead.next=list2;
                list2 = list2.next;
            }else {
                newHead.next=list1;
                list1=list1.next;
            }
            // 每添加一个新元素,链表必须往后移动一次。
                newHead=newHead.next;
            }

        //两条链表中有一条链表走完了,判断是那条链表走完了,
        //将没走完的那条链表,直接补到排完序的那条新链表后面。
            if(list1==null){
                movnode.next=list2;
            }
            if(list2==null){
                movnode.next=list2;
            }
        //返回合并完成新链表的头节点。
        return head.next;
    }
}