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抓取京东价格分析京东商品价格走势
Jan 09 Python
Python 正则表达式入门(中级篇)
Dec 07 Python
python正则实现计算器功能
Dec 14 Python
Python实现定时精度可调节的定时器
Apr 15 Python
python-opencv颜色提取分割方法
Dec 08 Python
python简单鼠标自动点击某区域的实例
Jun 25 Python
python基于FTP实现文件传输相关功能代码实例
Sep 28 Python
WxPython实现无边框界面
Nov 18 Python
通过实例了解Python str()和repr()的区别
Jan 17 Python
Python 操作SQLite数据库的示例
Oct 16 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
Feb 18 Python
用Python的绘图库(matplotlib)绘制小波能量谱
Apr 17 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脚本的10个技巧(8)
2006/10/09 PHP
PHP session垃圾回收机制实例分析
2019/06/28 PHP
return false,对阻止事件默认动作的一些测试代码
2010/11/17 Javascript
.net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
2013/03/11 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
2013/12/25 Javascript
Javascript使用post方法提交数据实例
2015/08/03 Javascript
精通JavaScript的this关键字
2020/05/28 Javascript
老生常谈 关于JavaScript的类的继承
2016/06/24 Javascript
vue引入jq插件的实例讲解
2017/09/12 Javascript
Vue filter格式化时间戳时间成标准日期格式的方法
2018/09/16 Javascript
JS+HTML5 canvas绘制验证码示例
2018/12/05 Javascript
vue项目出现页面空白的解决方案
2019/10/31 Javascript
vue+vant实现商品列表批量倒计时功能
2020/01/13 Javascript
基于JS实现table导出Excel并保留样式
2020/05/19 Javascript
JS原型对象操作实例分析
2020/06/06 Javascript
python 图片验证码代码
2008/12/07 Python
教大家使用Python SqlAlchemy
2016/02/12 Python
浅谈编码,解码,乱码的问题
2016/12/30 Python
python 图片去噪的方法示例
2019/07/09 Python
python 控制台单行刷新,多行刷新实例
2020/02/19 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
2020/02/28 Python
HTML5 新表单类型示例代码
2018/03/20 HTML / CSS
Europcar英国:英国汽车和货车租赁
2017/01/21 全球购物
windeln官方海外旗舰店:德淘超人气母婴超市
2017/12/15 全球购物
Strawberrynet草莓网新加坡站:护肤、彩妆、香水及美发产品
2018/08/31 全球购物
Exoticca英国:以最优惠的价格提供豪华异国情调旅行
2018/10/18 全球购物
北欧最好的童装网上商店:Babyshop
2019/09/15 全球购物
关于责任的演讲稿
2014/05/20 职场文书
2014年小学数学工作总结
2014/12/12 职场文书
2015年大学生党员承诺书
2015/04/27 职场文书
2015年英语教师工作总结
2015/05/20 职场文书
幼儿园老师工作总结2015
2015/05/22 职场文书
完美处理python与anaconda环境变量的冲突问题
2021/04/07 Python
nginx配置文件使用环境变量的操作方法
2021/06/02 Servers
Mysql systemctl start mysqld报错的问题解决
2021/06/03 MySQL
Python中itertools库的四个函数介绍
2022/04/06 Python