Step 1 :
Use hare and tortoise method to find whether thr exists a loop .
while(fast != null)
{
slow = slow->next
fast = fast->next
if(fast->next)
fast = fast->next
}
---- Now lets sat they meet at 'p' which a node in the loop segment.
Step 2 :
now disconnect the loop segment by the following stat..
q = p->next;
p->next = null;
Step 3 :
Now u hv two head pointers 1- head(given) 2 - q(the discoonetced part)
Find the legth of both the list
Find the diff btw them and move the head of the larger list (l1-l2) no of times
Step 4 :
Now traverse both the list till the pointers are the same..!!!