两条链表发生交叉:如图
如何判断链表是否交叉?
原理:如果两个链表相交,则指向最后一个节点的指针必定相等
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;
}
本文介绍了一种判断两条链表是否交叉的方法,并提供了一个返回交叉节点指针的算法。通过遍历链表,比较尾节点来确定链表是否交叉,并通过双层循环找到具体的交叉节点。
376

被折叠的 条评论
为什么被折叠?



