摘要: 今天看到c专家编程的最后,有一处关于检测链表是否存在环的算法介绍,这个问题和算法之前在很多地方有看见,大致是有三个问题:1.给你一个单向链表判断是否有环;2.求出环的长度;3.给出环的开始节点。算法是这样:让两个指针指向表头,一个每次移动一步,叫做慢指针,一个每次移动两步,叫做快指针,一直循环移动,如果最后两者都碰到NULL指针则表示没有环,如果最后两者指向同一个节点表示有环。至于问题2,3则是可以扩展得到,从快慢指针相遇的那个节点开始,令一个新的指针开始遍历,他从起点回到起点所经历过的步数就是所求长度length,而环的开始节点可以这样求,让一个指针p1指向链表头,另一个p2指向离他leng 阅读全文
posted @ 2013-09-01 18:21 persistentsnail 阅读(1052) 评论(0) 推荐(0) 编辑