如何判断链表有环?
2016-10-08 20:57
281 查看
题:有一个单向链表,链表当中有可能出现“环”,就像下图这样。如何用程序判断出这个链表是有环链表?
解决方法:首先创建两个指针1和2(在java里就是两个对象引用),同时指向这个链表的头节点。然后开始一个大循环,在循环体中,让指针1每次向下移动一个节点,让指针2每次向下移动两个节点,然后比较两个指针指向的节点是否相同。如果相同,则判断出链表有环,如果不同,则继续下一次循环。
分析:此方法也可以用一个更生动的例子来形容:在一个环形跑道上,两个运动员在同一地点起跑,一个运动员速度快,一个运动员速度慢。当两人跑了一段时间,速度快的运动员必然会从速度慢的运动员身后再次追上并超过,原因很简单,因为跑道是环形的。
解决方法:首先创建两个指针1和2(在java里就是两个对象引用),同时指向这个链表的头节点。然后开始一个大循环,在循环体中,让指针1每次向下移动一个节点,让指针2每次向下移动两个节点,然后比较两个指针指向的节点是否相同。如果相同,则判断出链表有环,如果不同,则继续下一次循环。
分析:此方法也可以用一个更生动的例子来形容:在一个环形跑道上,两个运动员在同一地点起跑,一个运动员速度快,一个运动员速度慢。当两人跑了一段时间,速度快的运动员必然会从速度慢的运动员身后再次追上并超过,原因很简单,因为跑道是环形的。
相关文章推荐
- 如何判断一个单向链表是否有环路
- 如何判断两个有环单向链表是否有重合结点
- 如何判断两个链表相交及找到第一个相交点
- 如何判断两个链表相交
- 如何判断链表有环
- 如何判断一个单向链表是否有环路?
- 如何判断两个链表相交及找到第一个相交点
- 如何判断两个链表是否相交,以及交点
- 如何判断链表是否有环
- (学习记录)如何判断链表是否有环
- 如何判断链表是否有环
- 如何判断一个链表中是否有环(百度面试题)
- 如何判断链表是否有环
- 百度笔试算法第二题:如何判断两个单向链表是否有相交,并找出交点
- 如何判断链表中存在环路
- 如何判断两个无环单向链表是否有重合结点
- 如何判断单向链表有环?
- C程序:如何判断链表是否有环
- 如何判断两个单向链表是否有相交,并找出交点
- 如何判断两个链表相交及找到第一个相交点