1. /***********************************/
2. /* 功能:求两个单链表是否相交和交点*/
3. /* 转载自CSDN博客 * /
4. /* 日期:2010/03/29 */
5. /***********************************/
6.
7.
8. Node* find(Node* head1,Node* head2)
9. {
10. Node *p1=head1,*p2=head2;
11. int m=0,n=0;
12. while(p1)//O(len1)
13. {
14. p1=p1->next;
15. m++;
16. }
17. while(p2)//O(len2)
18. {
19. p2=p2->next;
20. n++;
21. }
22. p1=head1;
23. p2=head2;
24.
25. if(m>n)
26. {
27. for(i=0;i<m-n;i++)
28. p1=p1->next;
29. }
30. else
31. {
32. for(i=0;i<n-m;i++)
33. p2=p2->next;
34. }//O(abs(len1-len2))
35. while(p1!=p2)
36. {
37. p1=p1->next;
38. p2=p2->next;
39. }//O(min(len1,len2))
40. return p1;
41. }