public class Solution {
public ListNode ReverseList(ListNode head) {
ListNode pre = null; //保存前驱节点
ListNode cur = head; // cur 一开始指向头节点
ListNode nex = null; // 临时保存cur.next ,因为cur.next 会被改变方向指向pre
while (cur != null) {
nex = cur.next;//临时保存 cur.next
cur.next = pre; //当前节点 进行 “反转操作” ,指向前置节点
pre = cur; //反转完成,前置节点向后移动
cur = nex;// 继续反转下一个节点,将cur指向 最初的 cur.next
}
return pre; //最终cur会指向null 而pre会指向反转链表的 头节点。
}
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
}