思路
考虑使用双指针的方式来进行反转,定义一个pre指针,指向需要反转的位置,cur指针代表当前位置,一层层进行反转,中间需要一个临时指针也就是代码中的node,因为一旦反转,之前的链路就断开了,比如cur.next = pre设置以后,原来的cur.next就找不到了,所以需要设置一个临时指针保存原本的cur.next,这样才能继续下一步操作
图片来自代码随想录
实现
js
var reverseList = function (head) {
let cur = head;
let pre = null;
while (cur) {
let node = cur.next;
cur.next = pre;
pre = cur;
cur = node;
}
return pre;
};