public static Node reverseListNode(Node head){
//单链表为空或只有一个节点,直接返回原单链表
if (head == null || head.getNext() == null){
return head;
}
//前一个节点指针
Node preNode = null;
//当前节点指针
Node curNode = head;
//下一个节点指针
Node nextNode = null;
while (curNode != null){
nextNode = curNode.getNext();//nextNode 指向下一个节点
curNode.setNext(preNode);//将当前节点next域指向前一个节点
preNode = curNode;//preNode 指针向后移动
curNode = nextNode;//curNode指针向后移动
}
return preNode;
}
先用当前节点指针curNode记录头节点,再用下一个节点指针nextNode记录头节点的下一个节点,当前节点(head)指向前一个节点preNode(此时为null),移动前一个节点指针preNode到当前节点(此时是head)的位置,移动当前节点指针curNode到下一个节点nextNode的位置,再将当前节点指针的下一个位置记录为nextNode,如此循环。