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概率计算器实例分析
Mar 25 Python
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
Aug 31 Python
python嵌套字典比较值与取值的实现示例
Nov 03 Python
python如何在列表、字典中筛选数据
Mar 19 Python
Django 限制用户访问频率的中间件的实现
Aug 23 Python
python数据结构之线性表的顺序存储结构
Sep 28 Python
使用11行Python代码盗取了室友的U盘内容
Oct 23 Python
Python比较配置文件的方法实例详解
Jun 06 Python
numpy求平均值的维度设定的例子
Aug 24 Python
Django数据库操作之save与update的使用
Apr 01 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
Jun 27 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
Jul 27 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条基色色带
2006/10/09 PHP
PHP随机数生成代码与使用实例分析
2011/04/08 PHP
PHP文件操作实现代码分享
2011/09/01 PHP
浅析PHP的ASCII码转换类
2013/07/05 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
PHP5.5新特性之yield理解与用法实例分析
2019/01/11 PHP
解决JS浮点数运算出现Bug的方法
2013/03/12 Javascript
javascript代码运行不出来执行错误的可能情况整理
2013/10/18 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
在web中js实现类似excel的表格控件
2016/09/01 Javascript
原生JS实现图片轮播切换效果
2016/12/15 Javascript
前端开发必知的15个jQuery小技巧
2017/01/22 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
seaJs使用心得之exports与module.exports的区别实例分析
2017/10/13 Javascript
深入浅析Node.js 事件循环、定时器和process.nextTick()
2018/10/22 Javascript
JavaScript设计模式之门面模式原理与实现方法分析
2020/03/09 Javascript
Vue初始化中的选项合并之initInternalComponent详解
2020/06/11 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
2020/07/21 Javascript
Openlayers绘制地图标注
2020/09/28 Javascript
python 环境变量和import模块导入方法(详解)
2017/07/11 Python
Django数据库表反向生成实例解析
2018/02/06 Python
python 定义给定初值或长度的list方法
2018/06/23 Python
利用Python进行数据可视化常见的9种方法!超实用!
2018/07/11 Python
如何在django里上传csv文件并进行入库处理的方法
2019/01/02 Python
Python异常处理例题整理
2019/07/07 Python
解决TensorFlow程序无限制占用GPU的方法
2020/06/30 Python
北美大型运动类产品商城:Champs Sports
2017/01/12 全球购物
澳大利亚领先的优质葡萄酒拍卖会:Langton’s Fine Wines
2019/03/24 全球购物
回馈慈善的设计师太阳镜:DIFF eyewear
2019/10/17 全球购物
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
2013/03/30 面试题
会计顶岗实习心得
2014/01/25 职场文书
村级环境卫生整治方案
2014/05/04 职场文书
企业读书活动总结
2014/06/30 职场文书
乡镇党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
浅谈mysql执行过程以及顺序
2021/05/12 MySQL
Python实现自动玩连连看的脚本分享
2022/04/04 Python