How would you find a cycle in a linked list?

Answers were Sorted based on User's Feedback



How would you find a cycle in a linked list? ..

Answer / sujith

Simultaneously go through the list by ones (slow iterator)
and by twos (fast iterator). If there is a loop the fast
iterator will go around that loop twice as fast as the slow
iterator. The fast iterator will lap the slow iterator
within a single pass through the cycle. Detecting a loop is
then just detecting that the slow iterator has been lapped
by the fast iterator.

This solution is "Floyd's Cycle-Finding Algorithm" as
published in "Non-deterministic Algorithms" by Robert W.
Floyd in 1967. It is also called "The Tortoise and the Hare
Algorithm"

Is This Answer Correct ?    11 Yes 2 No

How would you find a cycle in a linked list? ..

Answer / jaroosh

The above method is working of course, but is not the most
efficient. Other methods are however quite complex and not
so easy to explain.
Anyway, to exemplify this aforementioned method, maybe not
the most efficient code, but off the top of my head, hope
there are no misspellings.

bool isCyclic(LinkedNode *list)
{
if(list == NULL || list->next == NULL) return false;
LinkedNode *node1 = list, *node2 = node1->next;
while(node1 != node2)
{
if(node1==NULL || node2==NULL || node2->next == NULL)
return false;
node1 = node1->next;
node2= node2->next->next;
}
return true;
}

NOTE: the assumption is that for noncyclic list, the last
node has next pointer set to NULL.

Is This Answer Correct ?    6 Yes 7 No

How would you find a cycle in a linked list? ..

Answer / amit

the last node of the list will have address of first node
then it is a cycle linked list.

Is This Answer Correct ?    4 Yes 11 No

Post New Answer

More C Interview Questions

What is FIFO?

0 Answers  


Explain what does the function toupper() do?

0 Answers  


Why is c called a structured programming language?

0 Answers  


wtite a program that will multiply two integers in recursion function

4 Answers   TCS,


how to copy a string without using c function

5 Answers  






plz answer.. a program that takes a string e.g. "345" and returns integer 345

4 Answers  


I didn't count the ducks that I saw in line, but I do remember that one duck was in front of two ducks, another duck behind two ducks. How many ducks did I see?

2 Answers  


Write a program to compute the similarity between two strings - The program should get the two strings as input - Then it will output one single number which is the percentage of similarity between the two strings

0 Answers  


can anyone please tell about the nested interrupts?

0 Answers  


Find occurence of a character in a sting.

3 Answers   TCS,


What is the -> in c?

0 Answers  


#include <stdio.h> void main() { int i=-1,j=1,k,l; k=!i&&j; l=!i||j; printf ("%d%d",k,l) ; }

3 Answers   SRG,


Categories