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
Why is data structure important?
What do you mean by the term “percolate up”?
What is the similarity between a Structure, Union and enumeration?
What should I learn first data structures or algorithms?
For addition and deletion. Which one is most preferred: array list or linked list?
What is sorted list in data structure?
What is difference between linear and non linear data structure?
Why concurrenthashmap is fail safe?
Explain the common uses of threaded binary tree.
What happens if we put a key object in a hashmap which exists?
Which method will arrange the element of an array in alphabetical order?
What do you mean by shortest path?
Define a tree?
What thread means?
What is time complexity of sorting algorithms?