/* 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; } }