您的位置:首页 > 其它

求有环单链表的环连接点位置

2016-07-19 21:58 162 查看
第一次碰撞点Pos到连接点Join的距离=头指针到连接点Join的距离

因此,分别从第一次碰撞点Pos、头指针head开始走,相遇的那个点就是连接点。



在环上相遇后,记录第一次相遇点为Pos,连接点为Join,假设头结点到连接点的长度为LenA,连接点到第一次相遇点的长度为x,环长为R

    第一次相遇时,slow走的长度 S = LenA + x;

    第一次相遇时,fast走的长度 2S = LenA + n*x;

    所以可以知道,LenA + x =  n*R;  LenA = n*R -x;

int getLenA(Linklist list,LinkNode *meetNode){
int lenA=0;
LinkNode *fast = list;
LinkNode *slow = meetNode;
for(;;){
fast = fast->next;
slow = slow->next;
lenA++;
if(fast == slow)
break;
}
return lenA;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: