先了解单链表,单链表分两个域,data域存放值,next域存放下一个值的位置信息,所以它在内存中的存储不一定是连续的,当节点的next为null,说明单链表到此结束。

理解题意:给定2个有序递增单链表如[1,3,5,7]和[2,3,6,8],合并输出[1,2,3,3,5,6,7,8]。

思路:从头结点开始比较,若a的头结点h1比b的头结点h2小,则将h1作为合并后的头结点,h1的next为h1.next与h2中小的那个,所以h1.next = (h1.next,h2)比较,此处需要循环,直至h1.next或h2.next为空。

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

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode Merge(ListNode list1,ListNode list2) {
        if(list1 == null)return list2;
        if(list2 == null)return list1;
        
        if(list1.val<=list2.val){
            list1.next = Merge(list1.next,list2);
            return list1;
        }else{
            list2.next = Merge(list1,list2.next);
            return list2;
        }
        
    }
}