版权声明:如需转载,请注明出处 https://blog.csdn.net/baidu_41813368/article/details/83578901
判断两个链表是否相交
求出相交的结点
求长度
int GetLength(SListNode *node)
{
int count = 0;
for (; node != NULL; node = node->Next)
{
count++;
}
return count;
}
//一定有交点,求交点
SListNode * jiaodian(SListNode *List1, SListNode* List2)
{
int len1 = GetLength(List1);
int len2 = GetLength(List2);
SListNode*long1 = List1;//假设最长的是List1
SListNode*short1 = List2;//假设最短的是List2
int diff = len1 = len2;//求出相差的长度
if (len2 > len1) {
long1 = List2;
short1 = List1;
diff = len2 - len1;
}
//从长度相等处开始向后走,结点地址相等的就是交点
while (diff--)
{
long1 = long1->Next;
}
while (1) {
if (long1 == short1) {
return long1;
}
long1 = long1->Next;
short1 = short1->Next;
}
}