js 单链表的反转

Posted ajaxkong

tags:

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

 思路:

  1. 递归的基线条件:遍历到末节点(node.next === null)
  2. 递归的递归条件:node.next !== null
  3. 当遇到末节点时,返回末节点,末节点的next接受上一个head,返回前一节的,继续下去
  4. 考虑特殊情况:undefined和null
var reverseList = function (head) {
  // 闭包
  if (head === undefined || head === null) return null;
  var originalHead = head;
  var reverseHead;

  var reverse = function (head) {
    if (head.next === null) {
      reverseHead = head;
      return head;
    } else {
      var node = reverse(head.next);
      node.next = head;
      if (originalHead === head) {
        head.next = null;
        return reverseHead;
      } else {
        return head;
      }
    }
  }

  return reverse(head)
}

 

以上是关于js 单链表的反转的主要内容,如果未能解决你的问题,请参考以下文章

高效代码之反转单链表

Java手写单链表的反转

单链表逆置

[每日算法220508] 单链表和双链表的反转

Go 反转链表单链表的添加和显示单链表的添加和显示控制反转

Go 反转链表单链表的添加和显示单链表的添加和显示控制反转