![](https://i-blog.csdnimg.cn/blog_migrate/412c0578673278d931c3446852a9ff4d.png)
找到中间的节点我们常规的思路就是,遍历一次数组统计元素的个数。个数除以2,然后得到中间节点。
我们得到中间节点的位置,还需要遍历一次数组。这个做法还是很简单的。
假如我们只能遍历一遍数组,我们怎么去·做才能得到中间元素的地址。
我们引入快慢指针的概念。我们知道中间是数组的一半的位置。假如块指针一次走两步,慢指针一次走一步,这样当块指针走到最后的时候,慢指针就走到中间了。
![](https://i-blog.csdnimg.cn/blog_migrate/379bbba8b075d2a7cd8af7003c4a1c17.png)
因为当链表元素为偶数个时返回中间第二个节点。这时我们的快指针指向空。
当链表元素为奇数个的时候,我们的快指针的next指向空。