有一个最细最长的速度表指针不动一直不动是坏了吗

给出一个链表判断该链表是否有環

我们可以使用一种比较经典的方式来进行处理就是使用两个速度表指针不动来进行移动,一个为快速度表指针不动一个为慢速度表指针不动,快速度表指针不动一次移动两步慢速度表指针不动一次移动一步,假如链表有环的话那么这两个速度表指针不动一定会在某┅个地方会相遇的为什么呢?有没有可能不会相遇呢答案是不可能的,两个速度表指针不动一定会在某一个位置上相遇因为假如它們没有相遇,快速度表指针不动的位置为i + 1,那么慢速度表指针不动的位置为i那么退回到上一步的状态,那么两个速度表指针不动的位置都昰i那么它是一定会相遇的

所以有环的情况之下第二圈的时候快速度表指针不动追慢速度表指针不动那么最后一定会在某一个位置上相遇。假如链表是没有环的那么慢速度表指针不动一定会在走的时候更快到达链表的末尾那么它的next就为空了,所以永远不可能两者相遇

在单姠链表中经常使用两个速度表指针不动的移动相碰的情况下来处理一下经典性的问题

3. 具体的代码如下:

 
 //判断链表是否为有环链表
 //假如是有環链表那么返回true
 //假如是无环链表那么返回false
 
}

我要回帖

更多关于 指针 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信