美文网首页
理解递归

理解递归

作者: 高思阳 | 来源:发表于2018-10-18 14:47 被阅读2次

反转链表

image.png

还是老样子,我们先假设n-1个链表已经反转完成了:

image.png

那么此时我们应该怎么做呢?此时1这个元素的next指针还是指向2的,因为后面的反转并不会影响1元素的next指针:

image.png

所以此时我们只需要将节点2的next设为1,将节点1的next设为null即可完成反转!


image.png

代码如下:
public ListNode ReverseList(ListNode head) {
// 这里得到n-1反转后链表的头节点,也就是反转前的最后一个节点
ListNode newHead = ReverseList(head.next);
// 将节点2的next设为节点1
head.next.next = head;
// 将节点1的next设为null
head.next = null;
return newHead;
}
  那么此时先一般就完成了,接下来就是寻找特殊(边界)情况了,一行行代码看下来发现head和head.next为null时会报异常,于是处理异常情况:  
public ListNode ReverseList(ListNode head) {
if(head == null || head.next == null)
return head;
ListNode newHead = ReverseList(head.next);
head.next.next = head;
head.next = null;
return newHead;
}

相关文章

  • CSI讲义8:理解递归

    所有的计算都是递归;要理解递归首先要理解递归。 程序设计思想之一“递归”历来是同学们的理解难点。据说,**要理解递...

  • 数据结构之理解递归

    理解递归 要理解递归, 首先要理解递归 --佚名 递归是一种解决问题的方法, 他从解决问题的各个小部分开始, 知道...

  • 理解递归

    反转链表 还是老样子,我们先假设n-1个链表已经反转完成了: 那么此时我们应该怎么做呢?此时1这个元素的next指...

  • 理解递归

    从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?“从前有座山,山里有座庙,庙里有个老和...

  • 理解递归

    递归的概述 摘取维基百科关于递归的描述:递归(英语:Recursion),又译为递回,在数学[https://zh...

  • 94. Binary Tree Inorder Traversa

    递归!!!容易理解!!! 迭代:不太好理解:

  • 第十节-递归

    这节课的思路主要是如何理解递归 --> 递归的三个条件 --> 如何编写递归 --> 递归要注意的点 --> 怎么...

  • 快速理解递归

    *数学归纳法理解 斐波那契数列 其他理解 写出递归函数也就是要处理好递归的3个主要的点:a)出口条件,即递归“什么...

  • 算法-归并排序

    原理简单,代码也简单,但是不好理解,难理解的点在于递归,核心点在于merge。(递归过程难理解就运行起来看打印结果...

  • 人脑理解递归

    递归真是个奇妙的思维方式。自打我大二学习递归以来,对一些简单的递归问题,我总是惊叹于递归描述问题和编写代码的简洁。...

网友评论

      本文标题:理解递归

      本文链接:https://www.haomeiwen.com/subject/wtxszftx.html