只需判断两个链表是否有共同结点。
如果两个链表的长度一致,取到头结点,然后只需挨个比较两个链表的结点,
如果两个链表的长度不一致,那么需要将长链表的指针取到(len1 -Len2)的位置后再比较
第一步:取两个链表的长度;
第二步:长链表减去短链表的长度N = (n1-n2);
第三部:长链表将指针指向第N个结点;
void IsLinkIntersect(const linkNode *head1, const linkNode *head2)
{
if (!head1 || !head2)
{
return NULL;
}
linkNode *p = head1, *q = head2;
int n1 =0, n2 =0,num=0;
bool intersect = false;
while (p)
{
n1++;
p=p->next;
}
while (q)
{
n2++;
q=q->next;
}
if (n1>n2)
{
num = n1-n2
while (num >0)
{
p = p->next;
}
}
if (n2>n1)
{
num = n2-n1;
while(num >0)
{
q= q->next;
}
}
while (p !=NULL && p!= q )
{
p=p->next;
q=q->next;
}
if (p != NULL)
{
intersect = true;
}
}