带环链表

这里的带环单链表可不是环形单链表,这个环可能是我们不想要的,所以需要检测。
我们就不假设有一个打结状的环了,那样跑到哪里去也不清楚,这里的“带环链表”,环必然是在末端。
这是经典问题,方法众多,但方法效率差别很大,本文试举三例,并对较优算法加以编程实现。

算法一:暴力查重

双指针即可,前一个指针在遍历单链表,后一个指针遍历前指针之前的所有结点是否有与前指针相同的结点。
如果能跑到结尾,自然是无环的,否则就跑下去,总会发现的。
这算法很暴力,不好。

算法二:HashSet查重

不需要双指针,但需要多费一些空间,建一个HashSet,里面装每一个搜索过的结点,搜到的结点如果Set里有,就是说明了有环,否则就把新搜到的结点加入HashSet里面。搜到尽头就是没环。

算法三:双指针

前一个指针一次跳两个结点,后一个结点一次跳一个结点,如果有环,则前后必能相遇。如果前者跑到尽头就说明没环。

算法核心代码(Java语言描述):

private boolean isCircular

【数据结构与算法】判断单链表是否有环的算法相关推荐

  1. 判断单链表是否存在环

    周末参加完美世界校园招聘中就有一道判断单链表是否有环的编程题. 写一个C/C++函数,来判断一个单链表是否具有环,如果存在环,则给出环的入口点. 有一个单链表,其中可能有一个环,也就是某个节点的nex ...

  2. 如何判断单链表是否存在环

    原文:http://blog.csdn.net/liuxialong/article/details/6555850 如何判断单链表是否存在环 给定一个单链表,只给出头指针h: 1.如何判断是否存在环 ...

  3. 判断单链表是否有环及环的链接点(转)

    这篇文章是转载自蒙恩的罪人的博文:判断单链表是否有环及环的链接点(转),博文网址:http://blog.sina.com.cn/s/blog_725dd1010100tqwp.html 给定一个单链 ...

  4. 题目:代码实现判断单链表是否有环

    一.单链表环的定义: 有环的定义是,链表的尾节点指向了链接中间的某个节点.比如下图,如果单链表有环,则在遍历时,在通过结点J之后,会重新回到结点D. 题目:0.如何判断单链表里面是否有环? 算法的思想 ...

  5. 判断单链表是否存在环及环的入口点

    问题1:如何判断单链表中是否存在环(即上图中从结点E到结点R组成的环)? 解答: 设一快一慢两个指针(实际上是两个迭代器,Node *fast, *low)同时从链表起点开始遍历,其中快指针每次移动长 ...

  6. Java判断单链表是否有环的两种实现方法

    http://blog.jobbole.com/106227/ 方法一:首先从头节点开始,依次遍历单链表的每一个节点.每遍历到一个新节点,就从头节点重新遍历新节点之前的所有节点,用新节点ID和此节点之 ...

  7. c语言判断单链表是否有环,如何判断链表有环并计算环的长度

    总体思路: 给出题目:检测单链表中是否存在环. 可以遍历这个链表,遍历过的节点标记为Done,如果当目前准备遍历的节点为Done的时候,那么存在环,否则准备检测的节点为Null时,遍历完成,不存在环. ...

  8. 判断单链表是否有环 两链表是否相交

    1.如何判断一个链表是不是这类链表?  2.如果链表为存在环,如果找到环的入口点? 解答: 一.判断链表是否存在环,办法为: 设置两个指针(fast, slow),初始值都指向头,slow每次前进一步 ...

  9. 判断单链表是否有环以及环的连接点

    给定一个单链表,只给出头指针h: 1.如何判断是否存在环? 2.如何知道环的长度? 3.如何找出环的连接点在哪里? 4.带环链表的长度是多少? 解法: 1.对于问题1,使用追赶的方法,设定两个指针sl ...

最新文章

  1. libusb中的热插拔使用举例
  2. PHP + Redis 实现一个简单的twitter
  3. 凭借K2 SmartObject框架,在SharePoint中集成数据
  4. php扩展返回字符数组,PHP扩展之数组字符串处理
  5. 小帅小胖智能机器人价格_小胖机器人CEO魏然:机器人+教育,是未来教育大势所趋...
  6. mysql switch binlog_TiDB binlog实时同步数据到下游Kafka
  7. 推荐两个非常不错的公众号
  8. Java中的class类和对象总结(思维导图)
  9. AI 技术本身的一些优势,比如它能够从大量数据里去总结背后的规律
  10. 系统上线后如何确保原始数据的准确性?
  11. 编程环境和软件工具安装手册
  12. 毁灭行星,微信小游戏开发
  13. 分组传送网——LTE/QoS/保护/时钟同步
  14. B站《三体》动画正式开播 刘慈欣:宇宙很大,生活更大
  15. [淘宝客技术篇006]如何登录阿里妈妈-《登录淘宝网·二维码实现法》(下)
  16. 人工智能伦理风险治理具有复杂性,尚未形成完善的理论架构和治理体系
  17. C语言九九乘法表示例
  18. python数据分析期末_Python数据分析期末作业
  19. 清北力压耶鲁,MIT蝉联第一,2023QS世界大学排名最新发布
  20. Linux之NTFS、FAT32、exFAT各种格式硬盘挂载整理

热门文章

  1. 515Nod 1126 求递推序列的第n项【矩阵快速幂】
  2. 如何使用django显示一张图片
  3. 从C# String类理解Unicode(UTF8/UTF16)
  4. C#3.0笔记(一)预备知识之Delegate
  5. 基于 Windows Mobile 的 Pocket PC 和 Smartphone 的开发工具简介
  6. 连通图遍历策略之深度优先搜索(C语言)
  7. python画精美图案_Python语言的魅力------完美图案
  8. linux shell sql赋值,Linux下shell执行SQL
  9. 4怎么放大字体_win8.1系统如何放大所有字体?
  10. 计算机网络模拟校园,计算机网络课程设计-模拟校园网组网实验