Consideration

  • make three pointers , pre,current,next;
  • initial pre as null
  • use tmp to save current’s next node info
  • change current’s next to link pre node(first is null)
  • move pre pointer to next node
  • move current pointer to next node

soultion

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
     ListNode pre = null;
        ListNode current = head;

        while (current != null){

            ListNode next = current.next;
            current.next = pre;
            pre = current;
            current = next;
        }
        return pre;
        
    }
}