解题思路
首先有个newHead是表示指向新链表头的变量,temp是记录每次遍历newHead向后迁移一个节点后指向的节点,所以temp每次遍历完成后需要和newHead做一次同步。
原理就是newHead先向后迁移然后再把next指针指向原来的自己也就是temp.
current就是记录当前原链表的从开始节点到结束的变量,并且每次都比newHead超前一个节点,这样newHead才能顺着current向前移动。
代码
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
if(head==null){
return null;
}
//new list head node, should be null first
ListNode newHead = null;
ListNode temp = null;
ListNode current = head;
while(current != null){
newHead = current;
current = current.next;
newHead.next = temp;
temp = newHead;
}
return newHead;
}
}