求有环单链表的环长
在環上相遇后,記錄第一次相遇點為Pos,之后指針slow繼續每次走1步,fast每次走2步。
在下次相遇的時候fast比slow正好又多走了一圈,也就是多走的距離等于環長。
設從第一次相遇到第二次相遇,設slow走了len步,則fast走了2*len步,相遇時多走了一圈:
環長=2*len-len。
int getRingLength(LinkNode *meetNode){int RingLength=0;LinkNode *fast = meetNode;LinkNode *slow = meetNode;for(;;){fast = fast->next->next;slow = slow->next;RingLength++;if(fast == slow)break;}return RingLength;總結
- 上一篇: 输出链表中倒数第k个结点
- 下一篇: 求有环单链表的环连接点位置