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

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode ReverseList(ListNode head) {
        //当前节点,作为循环变量
        ListNode currentNode = head;
        //临时变量,中间转换使用
        ListNode temp = null;
        //下一个节点,不一定用到
        ListNode nextNode = null;
        //上一个节点,不一定用到
        ListNode pre = null;
        //结果
        ListNode ans = null;
        while (currentNode != null) {
            //保存当前节点的下一个节点,指针下一次要移动到下一个节点
            temp = currentNode.next;
            //如果当前节点的下一个节点为空,说明到了链表的最后一个节点
            if (temp == null) {
                ans = currentNode;
            }
            //将当前节点的指针反向
            currentNode.next = pre;
            //前一个指针后移
            pre = currentNode;
            //当前指针后移
            currentNode = temp;
        }
        return ans;
    }
}