分析:
若相交,则两个链表呈Y型,最后一个结点肯定相同;找交点,则用长的链表减去短的,从与短的链表长度相等处开始,两个链表每次移动一个结点,直到相交则是交点。
代码:
NODE* FindNode(NODE* pHead1, NODE* pHead2)
{
NODE* p1 = pHead1;
NODE* p2 = pHead2;
int i = 1, j = 1, k = 0, f = 0;
if(pHead2 == NULL || pHead2 == NULL)
{
return NULL;
}
while(p1->next != NULL)
{
p1 = p1->next;
i++;
}
while(p2->next != NULL)
{
p2 = p2->next;
j++;
}
if(p1 != p2)
{
return NULL;
}
else
{
p1 = pHead1;
p2 = pHead2;
f = fabs(i, j);
if(i > j)
{
for(k=0; k<f; k++)
{
p1 = p1->next;
}
while(p1 != p2)
{
p1 = p1->next;
p2 = p2->next;
}
return p1;
}
else
{
for(k=0; k<f; k++)
{
p2 = p2->next;
}
while(p1 != p2)
{
p1 = p1->next;
p2 = p2->next;
}
return p1;
}
}
}