我的机器学习教程「美团」算法工程师带你入门机器学习  以及 「三分钟系列」数据结构与算法  已经开始更新了,欢迎大家订阅~这篇专栏整合了这几年的算法知识,简单易懂,也将是我实体书的BLOG版。

欢迎大家扫码关注微信公众号「图灵的猫」,除了有更多AI、算法、Python相关文章分享,还有免费的SSR节点和外网学习资料。其他平台(微信/知乎/B站)也是同名「图灵的猫」,不要迷路哦~

接上一章的练习,这里接着实现单链表的变型——传说中的循环单链表。给出一个简单的类,构造4个功能并实例化测试。

在下一篇文章中将会关注一个比较tricky的问题:如何判断链表有环?以及求出环长度

# -*- coding: utf-8 -*-
"""
Created on Wed Jan 24 21:14:29 2018@author: Administrator
"""
from __future__ import print_function
from lingkingtables import Lnode
from lingkingtables import Llist
from lingkingtables import LinkListUnderFlow
#Python数据结构之循环单链表
#增加了尾结点,使得尾部查询更优化,且便于循环的实现
#头结点由_tail._next隐式说明,不单独构造class Clist:def __init__(self):self._tail = None  #定义一个尾结点def is_empty(self):return self._tail is Nonedef prepend(self, value):  #前端插入p = Lnode(value)if self._tail is None:p._next = p    #利用链表指针p判断空链表self._tail = p   #如果为空则插入并令P为尾结点else:p._next = self._tail._nextself._tail._next = pdef append(self, value):  #self.prepend(value)self._tail = self._tail._next#直接在尾部之后插入并将尾节点后移一位,相当于在后端插入def pop(self):  if self._tail is None:raise LinkListUnderFlow("in pop of Clist")p = self._tail._nextif self._tail is p:         #只有一个节点时弹出后表为空self._tail = Noneelse:self._tail._next = p.valuereturn p.valuedef printall(self):   #打印所有链表元素if self.is_empty():returnp = self._tail._next  #通过指针p从头结点开始while p:print(p.value)if p is self._tail:breakp = p._next#Ins实例化测试Ins2 = Clist()
Ins2.prepend(99)print("  test is commit...  ")for i in range(1,21):Ins2.append(int(i))Ins2.printall()

输出如下:

[output]1:test is commit...
[output]2: 99
[output]3:1 2 3 4 5 6 7 8 9 10
[output]4:11 12 13 14 15 16 17 18 1920

面向对象之Python的链表实现(二)循环链表相关推荐

  1. python之链表、单链表、双向链表、单向循环链表

    python之链表.单链表.双向链表.单向循环链表 链表 顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时,又需要进行数据的搬迁,所以使用起来并非很灵活 链表结构可以充分利用计算机 ...

  2. python定义链表节点_Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】...

    本文实例讲述了Python数据结构与算法之链表定义与用法.分享给大家供大家参考,具体如下: 本文将为大家讲解: (1)从链表节点的定义开始,以类的方式,面向对象的思想进行链表的设计 (2)链表类插入和 ...

  3. (C++版)链表(二)——实现单项循环链表创建、插入、删除等操作

    http://blog.csdn.net/fisherwan/article/details/25561857 链表(二)单向循环链表的实现,下面实现代码: [cpp] view plain copy ...

  4. 笔记37 笨办法学python练习43面向对象OOP的游戏代码(二)代码的反复理解

    笔记37 笨办法学python练习43面向对象OOP的游戏代码(二)代码的反复理解 连续贴着这个练习43的代码折腾了整整两天,把那些英文文本翻译为中文文本,重新装进这个代码之中.本想一段一段的运行,发 ...

  5. python单链表类_python 链表类

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 一般我们都构造双向循环链表. 二 python单向链表实现1 单项链表实现app ...

  6. python删除链表满足pred的元素_python 数据结构一 之 线性表

    python数据结构教程第一课 从这里将会正式开始讲解python的一些实用的数据结构,原理加上实例源码. 一.简介 二.线性表的抽象数据类型 三.顺序表的实现 四.链接表的实现 1.单链表 2.带尾 ...

  7. python链表_使用python实现链表操作

    一.概念梳理 链表是计算机科学里面应用应用最广泛的数据结构之一.它是最简单的数据结构之一,同时也是比较高阶的数据结构(例如棧.环形缓冲和队列) 简单的说,一个列表就是单数据通过索引集合在一起.在C里面 ...

  8. python小游戏之二

    20行python代码的入门级小游戏 20行python代码的入门级小游戏_linmo8256的博客-CSDN博客_py游戏代码 猜数字小游戏python实现(可用来撩妹撩汉) 猜数字小游戏pytho ...

  9. python 释放链表节点_四种常见链表的实现及时间复杂度分析(Python3版)

    四种常见的链表包括:单向链表,单向循环链表,双向链表,双向循环链表. 要实现的链表操作包括 - is_empty() 判断链表是否为空 - length() 求链表长度 - traversing() ...

  10. 本文详细介绍Python 设计模式系列之二: 创建型 Simple Factory 模式(转载)

    源地址:http://doc.chinaunix.net/python/200703/202210.shtml 本文详细介绍Python 设计模式系列之二: 创建型 Simple Factory 模式 ...

最新文章

  1. 某程序员吐槽:回老家被乡镇公务员表哥怼,催他赶紧上岸!表哥月薪3800,而他年包90w!...
  2. virtualbox在装centos5.6时自协把virtualbox add-on 装上了
  3. 聚类(三)FUZZY C-MEANS 模糊c-均值聚类算法——本质和逻辑回归类似啊
  4. python上海培训哪里比较好-上海十大python培训机构排名
  5. 12个球问题--微软面试题
  6. unity打包模型存在的一个问题
  7. 浅谈模型压缩之量化、剪枝、权重共享
  8. java获取当前工作目录
  9. 用C语言写的程序如何控制计算机硬件?
  10. Android Apk包的签名出库、自动编译与混淆
  11. webstrom使用方法
  12. python热力图美化_python如何画热力图?
  13. 如何在Python中从stdin读取
  14. oracle lock 1,Oracle試用 DBMS_LOCK.sleep(1);權限問題
  15. 苹果偷学微信代码,程序员小哥:天知道微信为什么会引用这个变量
  16. GIS添加图层、查询详细
  17. 二叉树:输出根节点到叶子的路径
  18. Pandas做数据空缺值填充
  19. Android实战开发Handler机制深度解析
  20. 彻底搞懂a++和++a的区别

热门文章

  1. C# Win32API
  2. mysql行级锁 select for update
  3. C#读取匿名对象的属性值的方法总结
  4. 贪心整理一本通1431:钓鱼题解
  5. 项目期复习:JS操作符,弹窗与调试,凝视,数据类型转换
  6. HTML(Hepertext Markup Language 超文本标记语言)
  7. 如何让BERT具有文本生成能力
  8. 百面机器学习——python实现二分类逻辑回归
  9. 论文赏析[ACL17]一个最小化的基于跨度的神经句法分析器
  10. 01 Nginx的高并发处理