前言:人生第一道算法题,没啥意思,就想记录一下- -

实现思路

先声明一个新的节点pre = null,然后声明一个新的节点cur = head,把头节点赋值给它,然后声明一个中间节点temp = cur.next,也就是将下一个节点赋值给中间节点temp

然后,赋值完之后再对cur.next进行操作,领cur.next = pre,也就是将当前节点的下一个节点,就是当前传过来的节点,比如一开始不是传入头节点吗,那么这时就让头节点的下一个节点指向pre,也就是null,然后再对pre进行操作,领pre = cur,主要是为下一次的迭代做好铺路,再让cur = temp,就是将开头中间节点保存的那个节点赋值给cur。以上的这些操作一直循环执行,直到cur指向null

最后,这些操作完之后,此时pre就是最后的节点了,返回pre

案例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var reverseList = function(head) {
if(head == null || head.next == null){
return head
}

// 声明中间变量
let cur = head
let pre = null
let next = null

while(cur != null){
// 把下一个节点赋给next
next = cur.next
// 再把下一个节点赋予中间值pre
cur.next = pre
pre = cur
cur = next
}

return pre;
};