找出两个单链表里交叉的第一个元素

要得到交点,先遍历一遍,得到长度L1和L2,长的那个链表先移动|L1-L2|步,再逐个比较,直到两个相等。

Node *p=L1,*q;
Int num1=0,num2=0;
while(p!=null)
{
	p=p->next;
	num1++;
}

p=L2;

while(p !=null)
{
	p=p->next;
	num2++;
}

if(num1>num2)
{
	p=L1;
	q=L2;
}
else
{
	p=L2;
	q=L1;
}

int num =abs(num1 -num2);
while(num>0)
{
	p=p->next;
	num--;
}
while(p!=q)
{
	p=p->next;
	q=q->next;
}

点赞