题意:反转一个单链表。
示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
注意: 不要使用额外链表
解决反转链表,只需要转变方向即可,由于需要从head节点开始遍历
那么需要一个currentNode 指向当前节点,tempHeadNode 指向临时头节点,virtualNode 指向 当前节点的需要指向的下一节点(或者说前节点)
private static void reverselinkedList(NodeheadNode) { Node currentNode; Node currentHeadNode; Node virtualNode; // 设置虚拟节点,作为当前节点的前节点 virtualNode = new Node<>(); virtualNode.setValue(-1); virtualNode.setNext(null); currentNode = headNode; while (currentNode != null){ // 暂时保存当前Node的下一节点为Head currentHeadNode = currentNode.getNext(); // 将当前节点的下一节点,设置为virtualNode , 实现反转节点 currentNode.setNext(virtualNode); // currentNode,virtualNode 下移一位 virtualNode = currentNode; currentNode = currentHeadNode; } } static class Node { private T value; private Node next; public T getValue() { return value; } public void setValue(T value) { this.value = value; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; } @Override public String toString() { return "Node{" + "value=" + value + ", next=" + next + '}'; } }



