题解
/* 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返回即可