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 is definition list?
How do you access the values within an array?
Who created quicksort?
If you are given a choice to use either arraylist and linkedlist, which one would you use and why?
Can arraylist contain duplicates?
What is faster array or arraylist?
What is comparable interface?
What do you mean by overflow and underflow?
What is raid (redundant array of inexpensive disks)?
Write an algorithm to find middle element in the linked list.
What are the advantages and disadvantages of linked list?
What are the objectives of studying data structures?
Which is the parent class of enumset class?
What are the issues that hamper the efficiency in sorting a file?
What's the difference between a hashtable and a hashmap?