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
Answer:B
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
Explanation: Advance the pointers such that the quick pointer advances two nodes at a time and the slow pointer advances one node at a time, and then check to see if the fast pointer is pointing to the slow pointer or if the fast pointer's 'next' is pointing to the slow pointer at any given time. For smaller lists, this is sufficient.