合并两个排序链表

Posted 雪浪snowWave

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了合并两个排序链表相关的知识,希望对你有一定的参考价值。

题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

思路:扫一遍维护递增,最后再添加原链表可能未被添加的部分

 public ListNode Merge(ListNode list1,ListNode list2) {
        if(list1==null&&list2==null) return null;
        if(list1==null&&list2!=null) return list2;
        if(list1!=null&&list2==null) return list1;
         ListNode res1=new ListNode(-1);
           ListNode res=res1;
       //要有两个指针指向创建的头结点,一个指针会走到末尾,返回的时候已经不能用了
        while(list1!=null&&list2!=null){
            if(list1.val<=list2.val){
                res.next=list1;
                res=res.next;
                list1=list1.next;
            }else{
                res.next=list2;
                res=res.next;
                list2=list2.next;
            }
        }
         while(list1 != null) {
            res.next = list1;
           res = res.next;
            list1 = list1.next;
        }
        while(list2 != null) {
            res.next = list2;
            res = res.next;
            list2 = list2.next;
        }
        return res1.next;
    }

 

以上是关于合并两个排序链表的主要内容,如果未能解决你的问题,请参考以下文章

代码的鲁棒性:合并两个排序的链表

#21 合并排序后的两个链表

《剑指Offer》题目:合并两个排序的链表

剑指offer合并两个排序的链表

合并两个排序的链表

最强解析面试题:合并两个排序的链表