• 面试问题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,则存在环。

  • 相关阅读:
    Docker笔记
    使用NextCloud搭建私有云盘
    docker轻量级管理工具
    docker仓库使用+harbor私有仓库部署
    防DDOS攻击解决方案
    MongoDB非关系型数据库
    监控磁盘使用率解决方案
    部署SonarQube代码质量检查7.7版本
    Jenkins的权限控制
    Jenkins分布式构建
  • 原文地址:https://www.cnblogs.com/zpfbuaa/p/5330203.html
Copyright © 2020-2023  润新知