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 20 Python
Python实现抓取网页并且解析的实例
Sep 20 Python
在Python的Django框架上部署ORM库的教程
Apr 20 Python
对pandas中Series的map函数详解
Jul 25 Python
python中的decorator的作用详解
Jul 26 Python
python图像处理模块Pillow的学习详解
Oct 09 Python
python 循环数据赋值实例
Dec 02 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
Dec 04 Python
python psutil监控进程实例
Dec 17 Python
Pandas时间序列:时期(period)及其算术运算详解
Feb 25 Python
Python内存映射文件读写方式
Apr 24 Python
解决keras加入lambda层时shape的问题
Jun 11 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 addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
2014/09/29 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
验证javascript中Object和Function的关系的三段简单代码
2010/06/27 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
2012/06/18 Javascript
javascript获取所有同类checkbox选项(实例代码)
2013/11/07 Javascript
JavaScript中的substr()方法使用详解
2015/06/06 Javascript
Webpack 实现 Node.js 代码热替换
2015/10/22 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
AngularJS 服务详细讲解及示例代码
2016/08/17 Javascript
JS中的事件委托实例浅析
2018/03/22 Javascript
vue-cli监听组件加载完成的方法
2018/09/07 Javascript
jquery无缝图片轮播组件封装
2020/11/25 jQuery
微信小程序实现页面监听自定义组件的触发事件
2020/11/01 Javascript
Python with的用法
2014/08/22 Python
在Django的form中使用CSS进行设计的方法
2015/07/18 Python
解决项目pycharm能运行,在终端却无法运行的问题
2019/01/19 Python
python 将字符串完成特定的向右移动方法
2019/06/11 Python
简单了解python中的f.b.u.r函数
2019/11/02 Python
python实发邮件实例详解
2019/11/11 Python
Python统计文本词汇出现次数的实例代码
2020/02/27 Python
Pygame的程序开始示例代码
2020/05/07 Python
sklearn中的交叉验证的实现(Cross-Validation)
2021/02/22 Python
CSS3新增布局之: flex详解
2020/06/18 HTML / CSS
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
Puccini乌克兰:购买行李箱、女士手袋网上商店
2020/08/06 全球购物
Expedia瑞典官网:预订度假屋、酒店、汽车租赁、机票等
2021/01/23 全球购物
教师实习期自我鉴定
2013/10/06 职场文书
电气工程师岗位职责
2014/01/01 职场文书
青年教师培训方案
2014/02/06 职场文书
毕业自我鉴定总结
2014/03/24 职场文书
任命书模板
2014/06/04 职场文书
微笑面对生活演讲稿
2014/09/23 职场文书
重阳节主题班会
2015/08/17 职场文书
公司年会晚会开幕词
2019/04/02 职场文书
《游戏王:大师决斗》将推出新卡牌包4月4日上线
2022/03/31 其他游戏