题解

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

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode ReverseList(ListNode head) {
        ListNode newHead = new ListNode(-1);
        while(null != head){
           ListNode nextHead = head.next;
           head.next = newHead.next;
           newHead.next = head;
           head = nextHead;
        }
        return newHead.next;
    }
}

思路

以下观点纯粹个人理解(主要围绕新链表的头插),首先创建个哨兵节点!正需遍历链表时,头节点不为空时,每次保存next引用 ,并把当前节点next指向哨兵节点的next,再把哨兵节点的next指向当前节点,最后再把头节点指向保存的next进行下次遍历!遍历结束取出哨兵节点的next返回即可