Python写数据结构:双向循环链表
注:有头结点
#!/usr/bin/python3.5
# _*_coding:utf-8class Node:def __init__(self, value):self.data = valueself.next = Noneself.prev = Noneclass CycleDoubleLinkList:def __init__(self):self._head = Node(None)self._head.next = self._headself._head.prev = self._headself._rear = self._headdef insert(self, index, value):if index <= 0:print('插入位置有误')returnn = Node(value)cur = self._headfor i in range(index - 1):cur = cur.nextif cur == self._head:print('插入位置有误')returnn.next = cur.nextcur.next.prev = ncur.next = nn.prev = curif n.next == self._head:self._rear = ndef remove(self, index):if self.empty():print('链表是空的')if index <= 0 and index > self.length():print('删除位置有误')returncur = self._headfor i in range(index - 1):cur = cur.nextn = cur.nextcur.next.next.prev = curcur.next = cur.next.nextif cur.next == self._head:self._rear = curdel ndef empty(self):return self._head.next == self._headdef travel(self):cur = self._head.nextprint('正向输出:')while cur != self._head:print(cur.data)cur = cur.nextprint('逆向输出:')while cur.prev != self._head:cur = cur.prevprint(cur.data)def search(self,value):cur = self._head.nextindex = 1while cur != self._head:if cur.data == value:print('index:%d,value:%d' % (index,value))returncur = cur.nextindex += 1print('没有该元素')def clear(self):cur = self._head.nextwhile cur != self._head:temp = curcur = cur.nextdel tempself._head.next = self._headself._head.prev = self._headdef appendleft(self,value):n = Node(value)self._head.next.prev = nn.next = self._head.nextself._head.next = nn.prev = self._headif n.next == self._head:self._rear = ndef appendright(self,value):n = Node(value)self._rear.next.prev = nn.next = self._rear.nextself._rear.next = nn.prev = self._rearself._rear = ndef length(self):cur = self._head.nextcount = 0while cur != self._head:cur = cur.nextcount += 1return countif __name__ == '__main__':link = CycleDoubleLinkList()
Python写数据结构:双向循环链表相关推荐
- Python写数据结构:单向循环链表
注:带头结点 #!/usr/bin/python3.5 # _*_coding:utf-8_*_class Node:def __init__(self, value):self.data = val ...
- 数据结构 -- 双向循环链表
这篇文章写的是双向循环链表,这也是个非常经典的数据结构,我们在看 Linux 内核代码时就经常会遇到它.比如,在Linux的内核中实现进程描述符,使用的就是双向循环链表,因为它使用起来很方便,每个节点 ...
- 数据结构--双向循环链表的实现
前言 之前学习了单链表的实现,单链表在实现的过程中,尾删,尾插是比较麻烦的,时间复杂度为O(N),而双向循环链表就不会有这样的顾虑,双向循环链表的结构是很有优势的.具体优势在实现的时候会显现出来. 双 ...
- python写数据结构书_有哪些用 Python 语言讲算法和数据结构的书?
python数据结构基础工具书籍下载-持续更新www.jianshu.com 以上网址有大量python数据结构的书籍下载,内容比较长,我这边拷贝了一部分. 本书示例丰富,图文并茂,以让人容易理解的 ...
- c语言 数据结构 双向循环链表逆序
双链循环链表排序: 原链表: 1 2 3 4 5 6 7 8 9 10 逆序后:10 9 8 7 6 5 4 3 2 1 思路: 把最后一个节点删除, 插到head下面去 数据 1 不用管, 把后面的 ...
- Python写数据结构:二叉树的创建和遍历
#!/usr/bin/python3.5 #_*_coding:utf-8_*_class Node:def __init__(self,value):self.data = valueself.lc ...
- Python写数据结构:二叉树的性质
二叉树性质1: 在二叉树的第i层上至多有2^(i-1)个结点(i>=1) 二叉树性质2: 深度为k的二叉树至多有2^k - 1个结点(k>=1) 二叉树性质3: 对任何一棵二叉树T,如果其 ...
- Python写数据结构:循环队列
#!/usr/bin/python3.5 #_*_coding:utf-8_*_class Queue():def __init__(self,capacity):self.queue = [None ...
- Python写数据结构:栈(顺序存储结构)
#!/usr/bin/python3.5 #_*_coding:utf-8_*_class Stack():def __init__(self,capacity):self.stack = [None ...
最新文章
- C++ transform for_each
- mysql命令行安装报错_centos命令行安装mysql随机密码查看方法(遇到问题及其解决办法)...
- 微电网日前优化调度 。算例有代码(3)
- 一键分享博客或新闻到Teams好友或频道
- mysql56允许远程连接_mysql允许远程连接的方法
- java增加内容辅助_Eclipse自定义内容辅助基于默认Java内容辅助结果
- 电脑公司特别版常用软件盘
- 同比、环比的区别及计算公式
- Windows文件系统-NTFS文件系统
- c语言的32位指针加1是多少,c语言中,指针加1的情况.指针变量详细介绍
- VR全景图片浏览实现
- 二进制转十进制快速方法
- .net CallbackOnCollectedDelegate 垃圾回收问题。 (Handle::Invoke”类型的已垃圾回收委托进行了回调。)
- springboot毕设项目体育馆开放管理系统设计与实现p6lj1(java+VUE+Mybatis+Maven+Mysql)
- 只招「测试开发工程师」了
- 招聘一个靠谱的iOS
- 11.Kuerbernetes
- 【在线电子杂志制作】云展网教程 | 如何设置缩放功能
- Dana Winner - Moonlight Shadow
- xp sp3系统连接华为手机,显示mtp驱动无法安装 2021/04/12
热门文章
- [转载] Python一行代码实现1到100之和
- springcloud-provider-consumer-register
- Hibernate的学习详解(4)
- [轉]最流行的PHP MVC框架
- 【C++笔记】构造函数与析构函数相关知识
- 【小白冲冲冲!!!】补1: 说一下最大化后验概率
- java final域_【Java】final 域的内存语义
- 格式notepad自动对齐_6.2 对齐设置
- 安卓中为什么onkeydown没有相应_为什么今年在园区注册个人独资企业能将企业总税率降低至3%?...
- python关键词共现_python 共现矩阵的实现