zoukankan      html  css  js  c++  java
  • 面试问题3:给一个单链表,怎么判断是否有环

    问题描述:给一个单链表,怎么判断是否有环

    前提条件:所给的指针指向的位置不确定(不一定指向头结点),单链表的长度未知,链表中存储的数据类型未知  

      个人方法:由于不知道链表的长度,以及所存储的数据类型,并且所给指针的指向任意的结点。那么不能按照从头依次遍历的方法。采用标记位的方法,初始化visited数组为0,将所给的指针依次移动,并且修改visited为1,每次移动判断该出的visited是否为0,若为0则表示未遍历到,当所得到的visited为1时,说明此单链表存在环。

      

      其他方法之一:使用p、q两个指针,p总是向前走,但q每次都从头开始走,对于每个节点,看p走的步数是否和q一样。如图,当p从6走到3时,用了6步,此时若q从head出发,则只需两步就到3,因而步数不等,出现矛盾,存在环

    其他方法之二:使用p、q两个指针,p每次向前走一步,q每次向前走两步,若在某个时候p == q,则存在环。

  • 相关阅读:
    定义函数
    变量与常量
    字符串与格式化
    字符串与编码
    字符编码
    元组-tuple
    列表-list
    分支和循环
    润乾配置连接kingbase(金仓)数据库
    润乾报表在proxool应用下的数据源配置
  • 原文地址:https://www.cnblogs.com/zpfbuaa/p/5330203.html
Copyright © 2011-2022 走看看