206. 反转链表

LeetCode 原题链接 image.png

实现思路

两个两个依次交换,交换的时候需要有一个临时变量记录剩下的链表,交换完成后将 pre 和 cur 向后移动一位,继续交换,直到 cur 为空。

  • 定义两个指针 pre 和 cur,pre 初始化为 null,cur 初始化为 head。
  • 遍历链表,将 cur 的 next 指向 pre,然后将 pre 和 cur 向后移动一位。
  • 遍历结束后,pre 指向新的链表头节点。

代码实现

var reverseList = function (head) {
  let pre = null;
  let cur = head;

  while (cur !== null) {
    let temp = cur.next;
    cur.next = pre;
    pre = cur;
    cur = temp;
  }

  return pre;
};