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 04 Python
python实现中文输出的两种方法
May 09 Python
Python如何为图片添加水印
Nov 25 Python
flask中过滤器的使用详解
Aug 01 Python
python实现播放音频和录音功能示例代码
Dec 30 Python
python实现在cmd窗口显示彩色文字
Jun 24 Python
python实现windows倒计时锁屏功能
Jul 30 Python
python openvc 裁剪、剪切图片 提取图片的行和列
Sep 19 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
Nov 15 Python
python numpy数组复制使用实例解析
Jan 10 Python
利用Tensorflow的队列多线程读取数据方式
Feb 05 Python
Python Django / Flask如何使用Elasticsearch
Apr 19 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生成静态页面详解
2006/11/19 PHP
PHP缓存技术的多种方法小结
2012/08/14 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
2014/06/24 PHP
php实现无限级分类
2014/12/24 PHP
10个值得深思的PHP面试题
2016/11/14 PHP
php mysql数据库操作类(实例讲解)
2017/08/06 PHP
Jquery Ajax.ashx 高效分页实现代码
2009/10/20 Javascript
jQuery实现的立体文字渐变效果
2010/05/17 Javascript
javscript对象原型的一些看法
2010/09/19 Javascript
为EasyUI的Tab标签添加右键菜单的方法
2012/07/14 Javascript
可自定义速度的js图片无缝滚动示例分享
2014/01/20 Javascript
js的image onload事件使用遇到的问题
2014/07/15 Javascript
js随机生成字母数字组合的字符串 随机动画数字
2015/09/02 Javascript
基于JavaScript实现下拉列表左右移动代码
2017/02/07 Javascript
微信小程序 详解页面跳转与返回并回传数据
2017/02/13 Javascript
实例讲解JavaScript预编译流程
2019/01/24 Javascript
javascript绘制简单钟表效果
2020/04/07 Javascript
Vue实现简单的拖拽效果
2020/08/25 Javascript
[45:18]完美世界DOTA2联赛循环赛 PXG vs IO 第二场 11.06
2020/11/09 DOTA
python实用代码片段收集贴
2015/06/03 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
2017/11/06 Python
Python之dict(或对象)与json之间的互相转化实例
2018/06/05 Python
pygame实现非图片按钮效果
2019/10/29 Python
简单了解Python3 bytes和str类型的区别和联系
2019/12/19 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
Python基于当前时间批量创建文件
2020/05/07 Python
英国标志性生活方式品牌:Skinnydip London
2019/12/15 全球购物
手工制作的意大利皮革运动鞋:KOIO
2020/01/05 全球购物
介绍一下JNDI的基本概念
2013/07/26 面试题
管理科学大学生求职信
2013/11/13 职场文书
承诺书的格式范文
2014/03/28 职场文书
《雕塑之美》教学反思
2014/04/24 职场文书
大队委竞选演讲稿
2014/04/28 职场文书
2015年营业员工作总结
2015/04/23 职场文书
初婚未育证明样本
2015/06/18 职场文书
2019七夕节祝福语36句,快来收藏吧
2019/08/06 职场文书