leetcode-反转链表

126 阅读1分钟

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

示例 1:

截屏2021-12-02 下午3.19.04.png

输入: head = [1,2,3,4,5]
输出: [5,4,3,2,1]

提示:

  • 链表中节点的数目范围是 [0, 5000]
  • -5000 <= Node.val <= 5000

代码思路

链表的题一般都是玩指针 先想一下,我们有一个curr,一开始指向的是第一个节点,prev指向的是curr的前一个节点,如果第一个的前一个节点没有那就设为空(null),我们也永远要把curr.next设置成prev,然后curr一个一个往前挪,prev也往前挪,也继续把curr.next设置成prev;这样这个链表也就反转过来了,此时就会出现一个问题,curr怎么挪过去,所以就有了next;

代码展示

var reverseList = function(head) {
    let prev = null;
    //指向第一个节点
    let curr = head; 
    //指向同一个节点
    let next = null;
    while(curr!==null){
        next = curr.next;
        curr.next = prev;
        prev = curr;
        curr = next
    }
    return prev
};