开发者社区> 问答> 正文

[@小川游鱼][¥20]如何判断一个单链表是否有环

如何判断一个单链表是否有环

展开
收起
jack胡 2018-12-17 16:55:36 2140 0
2 条回答
写回答
取消 提交回答
  • 阿里云问答专家、阿里云认证云计算工程师、Java研发工程师

    (1)快慢指针算法。
    (2)设两个工作指针p、q,p总是向前走,但q每次都从头开始走,对于每个节点,看p走的步数是否和q一样。比如p从A走到D,用了4步,而q则用了14步。因而步数不等,出现矛盾,存在环。
    (3)在环的入口点出断开,从而转换为看两个链表是否有交点的问题。

    2019-07-17 23:22:39
    赞同 展开评论 打赏
    • 快慢指针算法。

    对于这个问题我们可以采用“快慢指针”的方法。就是有两个指针fast和slow,开始的时候两个指针都指向链表头head,然后在每一步

    操作中slow向前走一步即:slow = slow->next,而fast每一步向前两步即:fast = fast->next->next。

    由于fast要比slow移动的快,如果有环,fast一定会先进入环,而slow后进入环。当两个指针都进入环之后,经过一定步的操作之后

    二者一定能够在环上相遇。

    2019-07-17 23:22:39
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载