@ above your code is only detecting loop.. my code is detecting loop and then removing loop as well
On Thu, Jan 13, 2011 at 5:04 PM, bittu <shashank7andr...@gmail.com> wrote: > @snehal ..although ur approach ir good but u make d problem little > complex,also missed out little checking, it can be done by using 2 > pointers & single while loop--Now Instruction(CPU) Matters. > > Rather then presenting different-2 algorithm i will present very > famous algorithm Floyd’s Cycle-Finding Algorithm: > > it is the fastest method. Traverse linked list using two pointers. > Move one pointer by one and other pointer by two. If these pointers > meet at some node then there is a loop. If pointers do not meet then > linked list doesn’t have loop. > > Time complexity O(n) > Space Complexity O(1) > > > Code-Snippet Below > > int is_loop(struct node *list) > { > struct node *slow_p = list, *fast_p = list; > > while(slow_p && fast_p && > slow_p->next && > fast_p->next && > fast_p->next->next ) > { > slow_p = slow_p->next; > fast_p = fast_p->next->next; > if (slow_p == fast_p) > { > printf("Found Loop"); > return 1; > } > } > return 0; > } > > > It Will Surely Works. > > > Regards > Shashank Mani "Don't b Evil U Can Learn whilw U Earn" > > -- > You received this message because you are subscribed to the Google Groups > "Algorithm Geeks" group. > To post to this group, send email to algogeeks@googlegroups.com. > To unsubscribe from this group, send email to > algogeeks+unsubscr...@googlegroups.com<algogeeks%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/algogeeks?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To post to this group, send email to algogeeks@googlegroups.com. To unsubscribe from this group, send email to algogeeks+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.