题解 | #反转链表#
反转链表
https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head == null){ //先判断链表为空的情况
return null;
}
//ListNode pre = head; // 这行没用
ListNode cur = head.next; //先保存头节点的后面一个节点
// ListNode tmp = cur.next; // 再保存头节点的后面一个节点的next域
head.next = null; //把头结点的next域置为空,因为反转链表后,头节点就成了最后一个节点,最后一个节点的next域为空【此时可以理解为头节点已经完成反转】
while(cur != null){ //进入反转
ListNode tmp = cur.next; //先保存cur的next域,防止断开联系
cur.next = head; //改变cur的指向【此时cur已经完成了反转】
head = cur; //让head到cur位置,为下一次循环反转做准备
cur = tmp; //目的同上
}
return head;
}
}