两条链表发生交叉:如图
如何判断链表是否交叉?
原理:如果两个链表相交,则指向最后一个节点的指针必定相等
void JudgeNode(ElemSN *head1,ElemSN*head2)
{
for( ;head1->next;head1=head1->next);
for( ;head2->next;head2=head2->next);
if(head1==head2)
printf("相交");
else
printf(“不想交”);
}
如何返回交叉节点的指针?
ElemSN *ReNode(ElemSN *head1,ElemSN*head2)
{
ElemSN *p1,*p2;
for(p1=head1;p1!=p2;p1=p1->next)
for(p2=head2;p2&&p2!=p1;p2=p2->next);
return p1;
}