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实现提取谷歌音乐搜索结果的方法
Jul 10 Python
python魔法方法-属性访问控制详解
Jul 25 Python
Python装饰器用法示例小结
Feb 11 Python
Python  unittest单元测试框架的使用
Sep 08 Python
python对矩阵进行转置的2种处理方法
Jul 17 Python
python读取ini配置文件过程示范
Dec 23 Python
python3格式化字符串 f-string的高级用法(推荐)
Mar 04 Python
python新手学习可变和不可变对象
Jun 11 Python
深入了解NumPy 高级索引
Jul 24 Python
如何从csv文件构建Tensorflow的数据集
Sep 21 Python
python中openpyxl和xlsxwriter对Excel的操作方法
Mar 01 Python
python实现的人脸识别打卡系统
May 08 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将对象转换成数组的方法(兼容多维数组类型)
2013/06/21 PHP
简单介绍PHP非阻塞模式
2016/03/03 PHP
Laravel如何实现适合Api的异常处理响应格式
2020/06/14 PHP
超简单的jquery的AJAX用法
2010/05/10 Javascript
json对象转字符串如何实现
2012/12/02 Javascript
Js实现当前点击a标签变色突出显示其他a标签回复原色
2013/11/27 Javascript
在每个匹配元素的外部插入新元素的方法
2013/12/20 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
2015/10/09 Javascript
Javascript从数组中随机取出不同元素的两种方法
2016/09/22 Javascript
Angular.JS学习之依赖注入$injector详析
2016/10/20 Javascript
最常见和最有用的字符串相关的方法详解
2017/02/06 Javascript
jQuery.validate.js表单验证插件的使用代码详解
2018/10/22 jQuery
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
Element Steps步骤条的使用方法
2020/07/26 Javascript
微信小程序实现上传照片代码实例解析
2020/08/04 Javascript
[01:43]深扒TI7聊天轮盘语音出处4
2017/05/11 DOTA
教你用Python脚本快速为iOS10生成图标和截屏
2016/09/22 Python
python使用RNN实现文本分类
2018/05/24 Python
pyqt5 实现在别的窗口弹出进度条
2019/06/18 Python
python绘制直方图和密度图的实例
2019/07/08 Python
python使用yield压平嵌套字典的超简单方法
2019/11/02 Python
pytorch中的inference使用实例
2020/02/20 Python
python Plotly绘图工具的简单使用
2020/03/03 Python
Python读取excel文件中带公式的值的实现
2020/04/17 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
英国浴室洗脸盆购物网站:Click Basin
2018/06/08 全球购物
美国家居装饰购物网站:Amanda Lindroth
2020/03/25 全球购物
公司应聘自荐书
2014/06/14 职场文书
学校欢迎标语
2014/06/18 职场文书
文案策划专业自荐信
2014/07/07 职场文书
四风问题原因分析及整改措施
2014/10/24 职场文书
二手车交易协议书标准版
2014/11/16 职场文书
《中彩那天》教学反思
2016/02/24 职场文书
导游词范文之颐和园/重庆/云台山
2019/09/10 职场文书
python 进阶学习之python装饰器小结
2021/09/04 Python
Python语法学习之进程的创建与常用方法详解
2022/04/08 Python