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系列之数据处理编程实例(一)
May 22 Python
python执行等待程序直到第二天零点的方法
Apr 23 Python
自动化Nginx服务器的反向代理的配置方法
Jun 28 Python
Python中的一些陷阱与技巧小结
Jul 10 Python
python实现中文分词FMM算法实例
Jul 10 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
Aug 05 Python
Python实现感知机(PLA)算法
Dec 20 Python
python如何实现一个刷网页小程序
Nov 27 Python
使用python判断jpeg图片的完整性实例
Jun 10 Python
python实现读取excel文件中所有sheet操作示例
Aug 09 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
Sep 21 Python
Python matplotlib安装以及实现简单曲线的绘制
Apr 26 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实现的支持imagemagick及gd库两种处理的缩略图生成类
2014/09/23 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
2014/11/04 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
2016/12/09 PHP
php 中htmlentities导致中文无法查询问题
2018/09/10 PHP
获取任意Html元素与body之间的偏移距离 offsetTop、offsetLeft (For:IE5+ FF1 )[
2006/12/22 Javascript
JavaScript 指导方针
2007/04/05 Javascript
javascript prototype,executing,context,closure
2008/12/24 Javascript
js 蒙版进度条(结合图片)
2010/03/10 Javascript
jquery 圆形旋转图片滚动切换效果
2011/01/19 Javascript
iframe如何动态创建及释放其所占内存
2014/09/03 Javascript
javaScript的函数对象的声明详解
2015/02/06 Javascript
jQuery实现类似老虎机滚动抽奖效果
2015/08/06 Javascript
jquery判断复选框选中状态以及区分attr和prop
2015/12/18 Javascript
nodejs模块学习之connect解析
2017/07/05 NodeJs
微信小程序使用radio显示单选项功能【附源码下载】
2017/12/11 Javascript
详解JS判断页面是在手机端还是在PC端打开的方法
2019/04/26 Javascript
微信小程序自定义tabBar在uni-app的适配详解
2019/09/30 Javascript
JavaScript复制变量三种方法实例详解
2020/01/09 Javascript
[01:02:45]完美世界DOTA2联赛 LBZS vs Forest 第三场 11.07
2020/11/09 DOTA
在Django的视图中使用form对象的方法
2015/07/18 Python
python下读取公私钥做加解密实例详解
2017/03/29 Python
pygame加载中文名mp3文件出现error
2017/03/31 Python
pandas全表查询定位某个值所在行列的方法
2018/04/12 Python
Python自然语言处理 NLTK 库用法入门教程【经典】
2018/06/26 Python
Django之无名分组和有名分组的实现
2019/04/16 Python
python爬虫项目设置一个中断重连的程序的实现
2019/07/26 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
2019/10/30 Python
python实现扫雷游戏
2020/03/03 Python
django queryset相加和筛选教程
2020/05/18 Python
python定义类的简单用法
2020/07/24 Python
canvas实现扭蛋机动画效果的示例代码
2018/10/17 HTML / CSS
基于Html5实现的语音搜索功能
2019/05/13 HTML / CSS
以特惠价提供在线奢侈品购物:FRMODA.com
2018/01/25 全球购物
酒店工作职员求职简历的自我评价
2013/10/23 职场文书
企业安全生产责任书
2014/04/14 职场文书
2016年春季开学典礼新闻稿
2015/11/25 职场文书