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

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode ReverseList(ListNode head) {
        ListNode pHead=null;//记录反转链表头部
        ListNode cur=head;//用于遍历当前链表
        while(cur!=null){
            //使用头插法,依次将遍历的节点插入pHead
            ListNode temp=pHead;//临时记录头插链表
            pHead=cur;//新节点加入头插链表
            cur=cur.next;//移动遍历指针
            pHead.next=temp;//连接old链表
        }
        return pHead;
    }
}

对于样例 {1,2,3}

简单表示原链表:[1]->[2]->[3]-null

初始
pHead=null
cur=[1]

步骤1 cur=[1]
temp=null(pHead)
pHead=1
cur=2
pHead.next=null(temp)
步骤2 cur=[2]
temp=[1]->null
pHead=2
cur=3
pHead.next=[1]->null
步骤3 cur=[3]
temp=[2]->[1]->null
pHead=3
cur=3
pHead.next=[2]->[1]->null
步骤4 cur=null break
pHead=[3]->[2]->[1]->null