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,则存在环。

  • 相关阅读:
    当一个模块没有默认导出
    <<平仓>>
    模态对话框
    PlanB S2F 模型
    <<深入React技术栈>> CSS Modules
    状态提升
    ol.proj.transform 坐标系转换
    HTMLVideoElement.srcObject MediaStream MediaSource Blob File
    毛玻璃特效 backdrop-filter
    Filter
  • 原文地址:https://www.cnblogs.com/zpfbuaa/p/5330203.html
Copyright © 2011-2022 走看看