笔试题:如何判断单链表是否存在环
来源:互联网 发布:y80电动机绕组数据 编辑:程序博客网 时间:2024/06/11 15:44
原文:http://blog.csdn.net/liuxialong/article/details/6555850
给定一个单链表,只给出头指针h:
1、如何判断是否存在环?
2、如何知道环的长度?
3、如何找出环的连接点在哪里?
4、带环链表的长度是多少?
解法:
1、对于问题1,使用追赶的方法,设定两个指针slow、fast,从头指针开始,每次分别前进1步、2步。如存在环,则两者相遇;如不存在环,fast遇到NULL退出。
2、对于问题2,记录下问题1的碰撞点p,slow、fast从该点开始,再次碰撞所走过的操作数就是环的长度s。
3、问题3:有定理:碰撞点p到连接点的距离=头指针到连接点的距离,因此,分别从碰撞点、头指针开始走,相遇的那个点就是连接点。
该定理的证明可参考:http://fayaa.com/tiku/view/7/
4、问题3中已经求出连接点距离头指针的长度,加上问题2中求出的环的长度,二者之和就是带环单链表的长度
判断是否存在环的程序:
寻找环连接点(入口点)的程序:
阅读全文
0 0
- 笔试题:如何判断单链表是否存在环
- 笔试题:如何判断单链表是否存在环
- 笔试题:如何判断单链表是否存在环
- 笔试题:如何判断单链表是否存在环
- 如何判断单链表是否存在环
- 如何判断单链表是否存在环
- 如何判断单链表是否存在环
- 【转载】如何判断单链表是否存在环
- 如何判断单链表是否有环存在
- 如何判断单链表是否存在环
- 单链表如何判断是否存在环
- 如何判断单链表是否存在环(算法)
- 如何判断单链表是否存在环
- 如何判断单链表是否存在环
- 判断单链表是否存在环
- 判断单链表是否存在环
- 判断单链表是否存在环
- 判断单链表是否存在环
- servlet/filter/listener/interceptor区别联系
- TCP建立连接三次握手
- virtualenv & virtualenvwrapper 的安装使用
- 10. 数据结构进阶十排序相关概念
- 初探C++
- 笔试题:如何判断单链表是否存在环
- 零欧电阻的使用
- DFS:108. Convert Sorted Array to Binary Search Tree
- 11. 数据结构进阶十一排序实现之冒泡法
- 12. 数据结构进阶十二排序实现之直接插入法
- HTML渲染过程
- 13. 数据结构进阶十三排序实现之希尔排序法
- JAVA 中原生的 socket 通信机制
- 利用Clion对几种排序算法进行时间复杂度与空间复杂度的分析