算法使用三个指针实现,每次循环将反转pre和head指向的节点
- pre:指向前一个节点,原头节点的前一个节点(反转后最后一个节点的下一个节点)为null,所以初始化pre=null
- head:指向当前节点,head为null时,循环结束
- next:存储head的下一个节点,因为在调整head和pre之间的关系时,
head.next=pre
,所以原head.next需要存起来,不然下次循环就找不到了
上代码
public static Node reverse(Node head){
Node pre = null;
Node next = null;
while (head != null) {
next = head.next;
head.next = pre;
pre = head;
head = next;
}
return pre;
}