【发布时间】:2010-10-04 10:27:21
【问题描述】:
有没有人知道一种算法来查找链表是否在自身上循环,只使用两个变量来遍历链表。假设您有一个对象的链接列表,那么什么类型的对象都没有关系。我在一个变量中有一个指向链表头部的指针,并且只给了另一个变量来遍历列表。
所以我的计划是比较指针值,看看是否有任何指针相同。该列表的大小有限,但可能很大。我可以将两个变量都设置为头部,然后用另一个变量遍历列表,总是检查它是否等于另一个变量,但是,如果我确实遇到了一个循环,我将永远无法摆脱它。我认为这与遍历列表和比较指针值的不同速率有关。有什么想法吗?
【问题讨论】:
-
谢谢,Turtle and Rabbit 确实提供了一个很好的解决方案。从概念上讲,如果列表循环回到自身,我也喜欢兔子绕着 Turtle 循环的想法。顺便说一句,列表不应该是一个循环链表,如果它循环,它可能会指向中间的某个地方。
标签: algorithm loops linked-list cycle