如何在不使用额外内存或变量的情况下检查链表是否为圆形?

时间:2018-07-27 10:18:54

标签: data-structures linked-list

如果给出了头部,如何在不使用额外内存的情况下检查链表是否为圆形

1 个答案:

答案 0 :(得分:0)

我们可以在这里使用两个指针

  1. 指向头部的慢指针。

  2. 快速指针也指向头部。

现在慢速指针将一次遍历列表(slow= slow.next)

而快速指针将在(fast = fast.next.next)之前跳一个节点。

因此,如果它们都在任意位置相遇,则链表中会出现循环,或者如果快速指针通过指向null值而终止,则意味着链表中没有循环。

condition -> if(fast.value == slow.value),然后有一个循环。

您可以参考此链接以获取更多说明-> https://www.geeksforgeeks.org/detect-loop-in-a-linked-list/