How can one find a cycle in the linked list? IF found how
to recognize the cycle and delete that cycle?
Answer Posted / chethu
Why are you guys moving both the pointers one behind the other?
You can keep a pointer at the header and traverse the other and check if it comes back to header if it does then there is a cycle else there is no cycle..
bool find_cycle(Node* head){
Node* ptr1 = head;
Node* ptr2 = head->next;
while(ptr2 != NULL && ptr2->next != NULL)
{
if(ptr1 == ptr2){
printf("\nClycle present in thr LinkList\n");
return true;
}
ptr2 = ptr2->next->next;
}
return false;
}
This should be more efficient.
| Is This Answer Correct ? | 1 Yes | 1 No |
Post New Answer View All Answers
What does the term sorting refer to?
Explain the internal working of a hash map?
How does max heap work?
What is a matrix? Explain its uses with an example
What is a circular singly linked list?
Which collection type is used to maintain uniqueness of data structure?
Why do we need sorting algorithms?
List the applications of stacks?
What are examples of data structures?
What is array indexing?
Define a tree?
What is circular linked list?
What are types of Collision Resolution Techniques and the methods used in each of the types?
What is difference between hashmap and arraylist?
where do you use double linked list?