反转链表js实现

281 阅读1分钟

在我还没接触链表的时候,便经常看到网友吐槽反转链表,而这一次我在力扣上刷到这个题,也是带着好奇的想法寻求解决方法。

力扣上的题目是这样的:

image.png

首先,链表和数组是不同的,它的每个单元 ListNode 是通过 next 指针连接在一起的,沿着 next 指针的方向走下去,就是链表的顺序。

D377831F454DB0B5539EDCE63D198C91.jpg

我这里选了我比较容易理解的双指针方法

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;
};