如果给出了头部,如何在不使用额外内存的情况下检查链表是否为圆形
答案 0 :(得分:0)
我们可以在这里使用两个指针
指向头部的慢指针。
快速指针也指向头部。
现在慢速指针将一次遍历列表(slow= slow.next)
而快速指针将在(fast = fast.next.next)
之前跳一个节点。
因此,如果它们都在任意位置相遇,则链表中会出现循环,或者如果快速指针通过指向null值而终止,则意味着链表中没有循环。
condition -> if(fast.value == slow.value)
,然后有一个循环。
您可以参考此链接以获取更多说明-> https://www.geeksforgeeks.org/detect-loop-in-a-linked-list/