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实现一个简单的线程池
Apr 07 Python
Pycharm学习教程(1) 定制外观
May 02 Python
Windows和Linux下Python输出彩色文字的方法教程
May 02 Python
Python入门_浅谈逻辑判断与运算符
May 16 Python
python字符串string的内置方法实例详解
May 14 Python
浅析Python与Mongodb数据库之间的操作方法
Jul 01 Python
详解Django 时间与时区设置问题
Jul 23 Python
tensorflow使用range_input_producer多线程读取数据实例
Jan 20 Python
python实现读取类别频数数据画水平条形图案例
Apr 24 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
Apr 27 Python
深入浅析pycharm中 Make available to all projects的含义
Sep 15 Python
详解Django中 render() 函数的使用方法
Apr 22 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
一步一步学习PHP(8) php 数组
2010/03/05 PHP
phpmyadmin config.inc.php配置示例
2013/08/27 PHP
php中的比较运算符详解
2013/10/28 PHP
phpexcel导入excel数据使用方法实例
2013/12/24 PHP
linux使用crontab实现PHP执行计划定时任务
2014/05/10 PHP
php提取字符串中网站url地址的方法
2014/12/03 PHP
php中mail函数发送邮件失败的解决方法
2014/12/24 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
2019/03/01 PHP
JavaScript Archive Network 集合
2007/05/12 Javascript
IE autocomplete internet explorer's autocomplete
2007/06/30 Javascript
多种方法实现load加载完成后把图片一次性显示出来
2014/02/19 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
2014/05/27 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
JavaScript数组方法大全(推荐)
2016/07/05 Javascript
require.js配合插件text.js实现最简单的单页应用程序
2016/07/12 Javascript
javascript判断元素存在和判断元素存在于实时的dom中的方法
2017/01/17 Javascript
利用Js+Css实现折纸动态导航效果实例源码
2017/01/25 Javascript
浅析vue.js数组的变异方法
2018/06/30 Javascript
Django+Vue跨域环境配置详解
2018/07/06 Javascript
vue-vuex中使用commit提交mutation来修改state的方法详解
2018/09/16 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
2019/03/06 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
vue中echarts引入中国地图的案例
2020/07/28 Javascript
[05:01]3.19DOTA2发布会 我们都是刀塔人
2014/03/25 DOTA
python字符串str和字节数组相互转化方法
2017/03/18 Python
Python3自动签到 定时任务 判断节假日的实例
2018/11/13 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
中科前程Java笔试题
2016/11/20 面试题
交通专业个人自荐信格式
2013/09/23 职场文书
八年级英语教学反思
2014/01/09 职场文书
大学生志愿者感言
2014/01/15 职场文书
湘江北去观后感
2015/06/15 职场文书
DIV CSS实现网页背景半透明效果
2021/12/06 HTML / CSS
Golang bufio详细讲解
2022/04/21 Golang
Oracle 11g数据库使用expdp每周进行数据备份并上传到备份服务器
2022/06/28 Oracle