面向对象之Python的链表实现(二)循环链表
我的机器学习教程「美团」算法工程师带你入门机器学习 以及 「三分钟系列」数据结构与算法 已经开始更新了,欢迎大家订阅~这篇专栏整合了这几年的算法知识,简单易懂,也将是我实体书的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的链表实现(二)循环链表相关推荐
- python之链表、单链表、双向链表、单向循环链表
python之链表.单链表.双向链表.单向循环链表 链表 顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时,又需要进行数据的搬迁,所以使用起来并非很灵活 链表结构可以充分利用计算机 ...
- python定义链表节点_Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】...
本文实例讲述了Python数据结构与算法之链表定义与用法.分享给大家供大家参考,具体如下: 本文将为大家讲解: (1)从链表节点的定义开始,以类的方式,面向对象的思想进行链表的设计 (2)链表类插入和 ...
- (C++版)链表(二)——实现单项循环链表创建、插入、删除等操作
http://blog.csdn.net/fisherwan/article/details/25561857 链表(二)单向循环链表的实现,下面实现代码: [cpp] view plain copy ...
- 笔记37 笨办法学python练习43面向对象OOP的游戏代码(二)代码的反复理解
笔记37 笨办法学python练习43面向对象OOP的游戏代码(二)代码的反复理解 连续贴着这个练习43的代码折腾了整整两天,把那些英文文本翻译为中文文本,重新装进这个代码之中.本想一段一段的运行,发 ...
- python单链表类_python 链表类
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 一般我们都构造双向循环链表. 二 python单向链表实现1 单项链表实现app ...
- python删除链表满足pred的元素_python 数据结构一 之 线性表
python数据结构教程第一课 从这里将会正式开始讲解python的一些实用的数据结构,原理加上实例源码. 一.简介 二.线性表的抽象数据类型 三.顺序表的实现 四.链接表的实现 1.单链表 2.带尾 ...
- python链表_使用python实现链表操作
一.概念梳理 链表是计算机科学里面应用应用最广泛的数据结构之一.它是最简单的数据结构之一,同时也是比较高阶的数据结构(例如棧.环形缓冲和队列) 简单的说,一个列表就是单数据通过索引集合在一起.在C里面 ...
- python小游戏之二
20行python代码的入门级小游戏 20行python代码的入门级小游戏_linmo8256的博客-CSDN博客_py游戏代码 猜数字小游戏python实现(可用来撩妹撩汉) 猜数字小游戏pytho ...
- python 释放链表节点_四种常见链表的实现及时间复杂度分析(Python3版)
四种常见的链表包括:单向链表,单向循环链表,双向链表,双向循环链表. 要实现的链表操作包括 - is_empty() 判断链表是否为空 - length() 求链表长度 - traversing() ...
- 本文详细介绍Python 设计模式系列之二: 创建型 Simple Factory 模式(转载)
源地址:http://doc.chinaunix.net/python/200703/202210.shtml 本文详细介绍Python 设计模式系列之二: 创建型 Simple Factory 模式 ...
最新文章
- 某程序员吐槽:回老家被乡镇公务员表哥怼,催他赶紧上岸!表哥月薪3800,而他年包90w!...
- virtualbox在装centos5.6时自协把virtualbox add-on 装上了
- 聚类(三)FUZZY C-MEANS 模糊c-均值聚类算法——本质和逻辑回归类似啊
- python上海培训哪里比较好-上海十大python培训机构排名
- 12个球问题--微软面试题
- unity打包模型存在的一个问题
- 浅谈模型压缩之量化、剪枝、权重共享
- java获取当前工作目录
- 用C语言写的程序如何控制计算机硬件?
- Android Apk包的签名出库、自动编译与混淆
- webstrom使用方法
- python热力图美化_python如何画热力图?
- 如何在Python中从stdin读取
- oracle lock 1,Oracle試用 DBMS_LOCK.sleep(1);權限問題
- 苹果偷学微信代码,程序员小哥:天知道微信为什么会引用这个变量
- GIS添加图层、查询详细
- 二叉树:输出根节点到叶子的路径
- Pandas做数据空缺值填充
- Android实战开发Handler机制深度解析
- 彻底搞懂a++和++a的区别