代码如下:(包含个人解析)
function ListNode(val) {
this.val = val;
this.next = null;
}
function reverseList(head) {
// head为null 或head只有一个元素时 直接返回
if (head === null || head.next === null) {
return head
}
// 定义3个变量 执行一个循环
p1 = head
p2 = head.next
p3 = null
// 一直执行到p2为null
while (p2 !== null) {
// p3为p2的next
p3 = p2.next
// 改变p2的next指向 指向p1
p2.next = p1
// 把p1 p2 p3 这三个标识往后移 p1 取代 p2的位置
p1 = p2
// p2 取代 p3的位置 继续执行p2的next指向改变操作
p2 = p3
}
// 将之前的head 也就是现在链表的最后一位置为null
head.next = null
// 再将head 修改为现在p1的位置
head = p1
// 将head返回出去
return head
}