题解 | 反转链表
反转链表
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;
}
}
