思路:使用两个变量fast和slow,从head开始一起往后走,fast一次走2步slow一次走一步,当fast走到最后一个节点或者走到null时,slow走到中间。
代码:
public Node findMiddleNode(){
Node fast=head;
Node slow=head;
while(fast!=null&&fast.next==null){
//上面这两个条件不能交换,否则fast如果为null,fast.next会出错
fast=fast.next.next;
slow=slow.next;
}
return slow;
}