在我还没接触链表的时候,便经常看到网友吐槽反转链表,而这一次我在力扣上刷到这个题,也是带着好奇的想法寻求解决方法。
力扣上的题目是这样的:
首先,链表和数组是不同的,它的每个单元 ListNode 是通过 next 指针连接在一起的,沿着 next 指针的方向走下去,就是链表的顺序。
我这里选了我比较容易理解的双指针方法
var reverseList = function(head) {
if(head == null){
return head;
}
// pl初始值指向null,并用于存储反转后的链表
// p2指向原链表的头节点
let p1 = null
let p2 = head
while(p2 != null){
// 用next保存p2的下一级
let next = p2.next
// 再将p2的下一级指向p1
p2.next = p1
// 移动两个指针
p1 = p2
p2 = next
}
return p1;
};