求有环单链表的环连接点位置
生活随笔
收集整理的這篇文章主要介紹了
求有环单链表的环连接点位置
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
第一次碰撞點(diǎn)Pos到連接點(diǎn)Join的距離=頭指針到連接點(diǎn)Join的距離,
因此,分別從第一次碰撞點(diǎn)Pos、頭指針head開始走,相遇的那個(gè)點(diǎn)就是連接點(diǎn)。
在環(huán)上相遇后,記錄第一次相遇點(diǎn)為Pos,連接點(diǎn)為Join,假設(shè)頭結(jié)點(diǎn)到連接點(diǎn)的長(zhǎng)度為LenA,連接點(diǎn)到第一次相遇點(diǎn)的長(zhǎng)度為x,環(huán)長(zhǎng)為R。
第一次相遇時(shí),slow走的長(zhǎng)度 S = LenA + x;
第一次相遇時(shí),fast走的長(zhǎng)度 2S =?LenA?+ n*R?+?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; }總結(jié)
以上是生活随笔為你收集整理的求有环单链表的环连接点位置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求有环单链表的环长
- 下一篇: 求有环单链表的链表长