/*判断两个链表是否交叉,如果交叉返回交叉节点,否则返回NULL。*/
Node* findCross(Node* head1,Node* head2)
{
if(head1==NULL||head2==NULL)
return NULL;
/*将第二个链表变成有环链表*/
Node* tail2=head2;
while(tail2->next!=NULL)
tail2=tail2->next;
tail2->next = head2;
Node* temp = findCircle(head1);
if(temp!=NULL)
return temp;
else
return NULL;
}
分析:
如果两个链表有交点,则把第一个链表的尾节点的next域指向第二个链表的首结点会构成一个环,然后判断是否有环即可,有环说明有交点,无环说明无交点
。