zoukankan      html  css  js  c++  java
  • 剑指offer十六之合并两个排序的链表

    一、题目

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

    二、思路

      注:链表1和链表2是两个递增排序的链表,合并这两个链表得到升序链表为链表3.

      首先分析合并两个链表的过程。我们的分析从合并两个链表的头结点开始。链表1的头结点的值小于链表2的头结点的值,因此链表1的头结点将是合并后链表的头结点。如下图所示。

    • 链表1的头结点的值小于链表2的头结点的值,因此链表1的头结点是合并后链表的头结点。
    • 在剩余的结点中,链表2的头结点的值小于链表1的头结点的值,因此链表2的头结点是剩余结点的头结点,把这个结点和之前已经合并好的链表的尾结点链接起来。

      继续合并两个链表中剩余的结点(图中虚线框所示)。在两个链表中剩下的结点依然是排序的,因此合并这两个链表的步骤和前面的步骤是一样的。我们还是比较两个头结点的值。此时链表2的头结点的值小于链表1的头结点的值,因此链表2的头结点的值将是合并剩余结点得到的链表的头结点。我们把这个结点和前面合并链表时得到的链表的尾结点(值为1的结点)链接起来,如图所示。

      当我们得到两个链表中值较小的头结点并把它连接到已经合并的链表之后,两个链表剩余的结点依然是排序的,因此合并的步骤和之前的步骤是一样的。这就是典型的递归的过程,可以定义递归函数来完成者以合并过程。

      每当代码试图访问空指针指向的内存时程序就会崩溃,从而导致鲁棒性问题。在本题中,当第一个链表是空链表,也就是它的头结点是一个空指针时,那么把它和第二个链表合并,显然合并的结果是第二个链表。同样,当输入的第二个链表的头结点是空指针时,我们把它和第一个链表合并得到的结果就是第一个链表。如果两个链表都是空链表,合并的结果是得到一个空链表。

    三、代码

    public class Solution {  
        public ListNode Merge(ListNode list1, ListNode list2) {  
                ListNode head;  
                if (list1 == null) {  
                    return list2;  
                }  
                if (list2 == null) {  
                    return list1;  
                }  
                if (list1.val < list2.val) {  
                    head = list1;  
                    head.next = Merge(list1.next, list2);  
                } else {  
                    head = list2;  
                    head.next = Merge(list1, list2.next);  
                }  
                return head;  
            }  
    }  
    View Code

    -------------------------------------------------------------------------------------------------------------------

    来源链接:http://blog.csdn.net/qq_23217629/article/details/51730312

  • 相关阅读:
    死锁
    Notepad++源代码阅读——窗口封装与继承
    Notepad++源代码阅读——窗口元素组织与布局
    选择问题(selection problem)
    插入排序 | 冒泡排序 | 希尔排序 | 堆排序 | 快速排序 | 选择排序 | 归并排序
    编程之美2014---大神与三位小伙伴
    ulimit 修改 open files & core
    tmux手记
    匿名访问windows server 2008 R2 文件服务器的共享
    WINDOWS系统变量
  • 原文地址:https://www.cnblogs.com/hezhiyao/p/7617997.html
Copyright © 2011-2022 走看看