题目
!! 题目来源:反转链表 - 力扣
分析
这个问题的思路比较简单直接:我们只需要在遍历链表的途中,将指针反转过来即可,具体示意见下图。
而具体细节我们只需要一个中间变量来保存 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;
};