python判断链表是否有环的实例代码


Posted in Python onJanuary 31, 2020

先看下实例代码:

class Node:
  def __init__(self,value=None):
    self.value = value
    self.next = None

class LinkList:
  def __init__(self,head = None):
    self.head = head

  def get_head_node(self):
    """
    获取头部节点
    """
    return self.head
    
  def append(self,value) :
    """
    从尾部添加元素
    """  
    node = Node(value = value) 
    cursor = self.head 
    if self.head is None:
      self.head = node
    else:  
      while cursor.next is not None:
        cursor = cursor.next
    
 
      cursor.next = node
      if value==4:
        node.next = self.head
  
  def traverse_list(self):
    head = self.get_head_node()
    cursor = head
    while cursor is not None:
      print(cursor.value)
      cursor = cursor.next
    print("traverse_over") 
    
  def hasCycle(self, head):
    """
    :type head: ListNode
    :rtype: bool
    """
    slow=fast=head
    while slow and fast and fast.next:
      slow = slow.next
      fast = fast.next.next
      if slow is fast:
        return True
    return False
  

  
def main():
  l = LinkList()
  l.append(1)
  l.append(2)
  l.append(3)
  l.append(4)
  head = l.get_head_node()
  print(l.hasCycle(head))
  #l.traverse_list()


if __name__ == "__main__":
  main()

知识点思考

判断一个单链表是否有环,

可以用 set 存放每一个 节点, 这样每次 访问后把节点丢到这个集合里面.

其实 可以遍历这个单链表, 访问过后,

如果这个节点 不在 set 里面, 把这个节点放入到 set 集合里面.

如果这个节点在 set 里面 , 说明曾经访问过, 所以这个链表有重新 走到了这个节点, 因此一定有环

如果链表都走完了, 把所有的节点都放完了. 还是没有重复的节点, 那说明没有环.

以上就是本次介绍的全部相关知识点内容,感谢大家的学习和对三水点靠木的支持。

Python 相关文章推荐
python中os操作文件及文件路径实例汇总
Jan 15 Python
Python的类实例属性访问规则探讨
Jan 30 Python
浅谈python为什么不需要三目运算符和switch
Jun 17 Python
详解python中的json的基本使用方法
Dec 21 Python
Python绘制二维曲线的日常应用详解
Dec 04 Python
python+tifffile之tiff文件读写方式
Jan 13 Python
解决python3插入mysql时内容带有引号的问题
Mar 02 Python
Python远程linux执行命令实现
Nov 11 Python
python 下载m3u8视频的示例代码
Nov 11 Python
python3实现名片管理系统(控制台版)
Nov 29 Python
Python3中PyQt5简单实现文件打开及保存
Jun 10 Python
python标准库ElementTree处理xml
May 20 Python
python爬取王者荣耀全皮肤的简单实现代码
Jan 31 #Python
Python进阶之迭代器与迭代器切片教程
Jan 29 #Python
Python列表list操作相关知识小结
Jan 29 #Python
给Python学习者的文件读写指南(含基础与进阶)
Jan 29 #Python
40个你可能不知道的Python技巧附代码
Jan 29 #Python
你可能不知道的Python 技巧小结
Jan 29 #Python
Python如何通过Flask-Mail发送电子邮件
Jan 29 #Python
You might like
实时抓取YAHOO股票报价的代码
2006/10/09 PHP
cmd下运行php脚本
2008/11/25 PHP
图解找出PHP配置文件php.ini的路径的方法
2014/08/20 PHP
destoon出现验证码不显示时的紧急处理方法
2014/08/22 PHP
php微信开发接入
2016/08/27 PHP
PHP实现的日历功能示例
2018/09/01 PHP
jQuery中的select操作详解
2016/11/29 Javascript
JS中检测数据类型的几种方式及优缺点小结
2016/12/12 Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
2017/02/10 Javascript
Vue项目全局配置页面缓存之按需读取缓存的实现详解
2018/08/01 Javascript
JS实现点击拉拽轮播图pc端移动端适配
2018/09/05 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
解决微信小程序scroll-view组件无横向滚动的问题
2020/02/04 Javascript
[15:58]DOTA2国际邀请赛采访专栏:Tongfu.Sansheng&KingJ,DK.rOtk
2013/08/08 DOTA
[01:10]3.19DOTA2发布会 三代刀塔人第一代
2014/03/25 DOTA
[00:17]天涯墨客一技能展示
2018/08/25 DOTA
删除目录下相同文件的python代码(逐级优化)
2012/05/25 Python
Python中decorator使用实例
2015/04/14 Python
python+selenium实现163邮箱自动登陆的方法
2017/12/31 Python
python遍历文件夹下所有excel文件
2018/01/03 Python
Python中常见的异常总结
2018/02/20 Python
django模板加载静态文件的方法步骤
2019/03/01 Python
flask框架渲染Jinja模板与传入模板变量操作详解
2020/01/25 Python
Python 如何测试文件是否存在
2020/07/31 Python
Django中的DateTimeField和DateField实现
2021/02/24 Python
CSS3中box-shadow的用法介绍
2015/07/15 HTML / CSS
Woolworth官网:澳洲第一大超市
2017/06/25 全球购物
DIY蛋糕店的创业计划书范文
2013/12/26 职场文书
2014年三八妇女节活动总结
2014/03/01 职场文书
抽奖活动主持词
2014/03/31 职场文书
新品发布会策划方案
2014/06/08 职场文书
新文化运动的口号
2014/06/21 职场文书
党员四风问题对照检查材料
2014/09/27 职场文书
人民币使用说明书
2019/04/17 职场文书
Java界面编程实现界面跳转
2022/06/16 Java/Android