# Consider a small circular linked list. How to detect the presence of cycles in this list effectively?

+1 vote
183 views
Consider a small circular linked list. How to detect the presence of cycles in this list effectively?

(a) Keep one node as head and traverse another temp node till the end to check if its ‘next points to head

(b) Have fast and slow pointers with the fast pointer advancing two nodes at a time and slow pointer advancing by one node at a time

(c) Cannot determine, you have to pre-define if the list contains cycles

(d) Circular linked list itself represents a cycle. So no new cycles cannot be generated

This question is from Circular Linked List in section Abstract Data Types of Data Structures & Algorithms I

+1 vote
by (679k points)
selected by

Correct choice is (b) Have fast and slow pointers with the fast pointer advancing two nodes at a time and slow pointer advancing by one node at a time

Best explanation: Advance the pointers in such a way that the fast pointer advances two nodes at a time and slow pointer advances one node at a time and check to see if at any given instant of time if the fast pointer points to slow pointer or if the fast pointer’s ‘next’ points to the slow pointer. This is applicable for smaller lists.

+1 vote
+1 vote
+1 vote