题解 | 反转链表

反转链表

https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca

// 定义一个类
class ListNode {
    int val;
    ListNode next;

    ListNode(int val) {
        this.val = val;
        this.next = null;
    }
} 

class Solution {
    public ListNode ReverseList(ListNode head) {

        // 初始状态下,prev为前一个链表,链表头部的prev是null,next此时没有具体的指向
        ListNode prev = null; // cur的前一个链表是null
        ListNode cur = head;  // head代表链表中的头节点
        ListNode next = null; // cur的next是null
        
        // 第一次循环后,第一个链表的next改为prev,第一个链表自己变成下一个链表的prev,
        while (cur != null) {  // 只要cur不是null,就执行如下循环
    
            next = cur.next;
            cur.next = prev;  // 把cur.next指向prev,即从后指向前
            prev = cur;       // 当前正在遍历的链表cur变成prev,即下一个链表的prev
            cur = next;       // 把cur移到下一个要处理的链表
        }
        return prev;
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务