/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode ReverseList(ListNode head) {
        ListNode pre = null;
        ListNode cur = head;
        ListNode tmp = null;
        while(cur != null){
            tmp = cur.next;
            cur.next = pre;
            pre = cur;
            cur = tmp;
        }
        return pre;
    }
}

算法思想

  • 反转链表首先需要 tmp 节点来保存当前节点 cur 的 下一节点,还要有一个 前驱节点 pre 来保存 cur 的前一节点
  • 循环,改变节点指向就好