【发布时间】:2012-01-11 06:42:27
【问题描述】:
在面试问题中,“实施一种检测循环存在的算法。”。比如链表有一个循环,比如:
0--->1---->2---->3---->4---->5---->6
▲ |
| ▼
11<—-22<—-12<—-9<—-8
使用 Floyd 的循环检测,这个问题可以通过使用快慢指针来解决。所以我应该尝试比较
一个。 链接的节点值,即
if (fast.data == slow.data)
break;
其中快和慢的类型为Link
class Link
{
int IData {get; set;}
Link Next {get; set;}
}
或
b. 它们是否指向相同的参考文献,即if (fast == slow)
谢谢。
【问题讨论】:
-
if (fast == slow)是正确的检查。
标签: c# linked-list floyd-cycle-finding