将一个单链表反转,结果得到的是链表的最后一个,以及第一个。确实是反转了,但是只剩下两个元素了。
public static Node reverseNode(Node node){
if(node==null||node.getNext()==null){
return node;
}
Node newHeadNode=reverseNode(node.getNext());
node.setNext(null);
newHeadNode.setNext(node);
return newHeadNode;
}
错误在于 newHeadNode.setNext(node); 将第一个节点指向下一个节点改为指向最后一个节点。
正确的应该是 通过原来的第一个节点(A)得到第二个节点(B)。节点(B)为反转后的最后一个节点,使节点B 指向节点A,使节点A指向null。
public static Node reverseNode(Node node){
if(node==null||node.getNext()==null){
return node;
}
Node newHeadNode=reverseNode(node.getNext());
Node lastNode=node.getNext();
node.setNext(null);
lastNode.setNext(node);
return newHeadNode;
}
通过画图的方式就不会错啦!