题目
!! 题目来源:反转链表 - 力扣
分析
这个问题的思路比较简单直接:我们只需要在遍历链表的途中,将指针反转过来即可,具体示意见下图。
而具体细节我们只需要一个中间变量来保存 next,在反转节点之后,通过 next 往后遍历链表即可。
代码如下:
var reverseList = function (head) { let cur = head; let prev = null; while (cur) { let next = cur.next; cur.next = prev; prev = cur; cur = next; } return prev; }; 复制代码
优化
这里我们可以借助 es6 的解构赋值让代码变得更骚一点:
var reverseList = function (head) { let cur = head; let prev = null; while (cur) [cur.next, prev, cur] = [prev, cur, cur.next]; return prev; }; 复制代码