原文:206. 反转链表(leetcode 解题) - 每天一个JavaScript小知识@Js中文网 · 码农进阶题库

原文地址:https://www.javascriptc.com/interview-tips/zh_cn/leetcode/leetcode-javascript-solution-0206/

题目:

难度:Easy

相关话题:链表

反转一个单链表。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

/**
 * @来源: Javascript中文网 - 前端进阶资源教程 https://www.javascriptc.com/
 * @介绍:一个致力于帮助开发者用代码改变世界为使命的平台,每天都可以在这里找到技术世界的头条内容
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var reverseList = function(head) {
  function iteratively (node){
    let prev=null
    while(node){
      let next=node.next
      node.next=prev
      prev=node
      node=next
    }
    return prev
  }


  function recursively (node){
    if(!node || !node.next)return node
    let r=recursively(node.next)
    node.next.next=node
    node.next=null
    return r
  }

  return recursively(head)
};

扩展阅读: