Detecting a Loop in Linked List
Procedure to check if a given list has a loop using Floyd's Cycle Finding Algorithm.
Procedure :
int isLoop(struct node *ptr) {
// Two pointers to check for loop
struct node *slow = ptr;
struct node *fast = ptr;
while (slow && fast && fast -> next) {
// Move slow by one step
slow = slow -> next;
// Move fast by two steps
fast = fast -> next -> next;
// Check if the pointers are same
if (slow == fast) {
return 1;
}
}
return 0;
}Last updated