JS实现的算法(十)--反转链表

531 阅读1分钟

反转一个单链表。

示例:

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

(题目转自leetcode)

解:

// 循环
var reverseList = function(head) {
  let currentNode = head;
  let prevNode = null;
  while(currentNode) {
    const nextNode = currentNode.next;
    currentNode.next = prevNode;
    prevNode = currentNode;
    currentNode = nextNode;
  }
  return prevNode;
};

// 递归
var reverseList2 = function(head) {
  if(head === null || head.next === null) {
    return head;
  }
  const r = reverseList(head.next);
  head.next.next = head;
  head.next = null;
  return r;
};