双向链表:

######################  P4.13-P4. 双向链表  ###########################
# import singlelinkListclass Node(object):def __init__(self,item):self.elem = itemself.next = Noneself.prev = None# class DoublelinkList(singlelinkList): #继承
class DoublelinkList(object):def __init__(self, node = None):self.__head = nodedef is_empty(self):return  self.__head is Nonedef travel(self):cur = self.__headwhile cur.next != None:print(cur.elem, end=" ")cur= cur.nextprint("")def length(self):"""length of list 遍历 借助 Cursor 指针或者游标计数"""cur = self.__headcount = 0while cur != None:# cur.next = Nonecount+=1cur = cur.nextreturn countdef add(self, item):node = Node(item)node.next = self.__headself.__head = nodenode.next.prev = nodedef append(self, item):node = Node(item)  # node 实例化if self.is_empty():self._head = nodeelse:cur = self.__headwhile cur.next != None:cur = cur.nextcur.next = nodenode.prev = curdef insert(self, pos, item):""":param pos  从0 开始 """if pos < 0:self.add(item)elif pos > (self.length() - 1):self.append(item)else:cur = self.__headcount =0while (count < pos):count += 1cur = cur.nextnode = Node(item)node.next = curnode.prev = cur.prevcur.prev = nodecur.prev.next = nodedef remove(self, item):cur = self.__headwhile cur != None:if cur.elem == item:if cur == self.__head:self.__head = cur.nextif cur.next:cur.next.prev = Noneelse:cur.prev.next = cur.nextif cur.next:cur.next.prev = cur.prevbreakelse:pre = curcur = cur.nextdef search(self, item):cur = self.__headwhile cur != None:if cur.elem == item:return Trueelse:cur = cur.nextreturn Falseif __name__ =="__main__":ll = DoublelinkList()print(ll.is_empty())print(ll.length())ll.append(1)print(ll.is_empty())print(ll.length())ll.append(2)# ll.add(8)ll.append(3)ll.append(4)ll.append(5)ll.append(6)ll.insert(-1, 9)ll.insert(3, 100)ll.insert(8, 1234)ll.travel()
### 9 8 1 3 119 1 3 1234ll.remove(1234)ll.travel()

python数据结构与算法:双向链表相关推荐

  1. Python数据结构与算法(2.4)——双向链表

    Python数据结构与算法(2.4)--双向链表 0. 学习目标 1. 双向链表简介 1.1 双向链表介绍 1.2 双向链表结点类 1.3 双向链表优缺点 2. 双向链表实现 2.1 双向链表的初始化 ...

  2. 视频教程-Python数据结构与算法面试(上)-Python

    Python数据结构与算法面试(上) 东北大学计算机专业硕士研究生,欧瑞科技创始人&CEO,曾任国内著名软件公司项目经理,畅销书作者,企业IT内训讲师,CSDN学院专家讲师,制作视频课程超过1 ...

  3. Python天天美味(32) - python数据结构与算法之堆排序

    1. 选择排序 选择排序原理是先选出最小的数,与第一个数交换,然后从第二个数开始再选择最小的数与第二个数交换,-- def selection_sort(data):     for i in ran ...

  4. python数据结构与算法13_python 数据结构与算法 (13)

    python 数据结构与算法 (13) 选择排序 (Selection sort) 是? 种简单直观的排序算法. 它的? 作原理如 下.? 先在未排序序列中找到最?(?)元素, 存放到排序序列的起始位 ...

  5. python leetcode_leetcode 介绍和 python 数据结构与算法学习资料

    for (刚入门的编程)的高中 or 大学生 leetcode 介绍 leetcode 可以说是 cs 最核心的一门"课程"了,虽然不是大学开设的,但基本上每一个现代的高水平的程序 ...

  6. Python数据结构与算法(二)栈和队列

    本系列总结了python常用的数据结构和算法,以及一些编程实现. 参考书籍:<数据结构与算法 Python语言实现> [美]Michael T.Goodrich, Roberto Tama ...

  7. Python数据结构与算法(一)列表和元组

    本系列总结了python常用的数据结构和算法,以及一些编程实现. 参考书籍:<数据结构与算法 Python语言实现> [美]Michael T.Goodrich, Roberto Tama ...

  8. Python 数据结构与算法——快排

    Python 数据结构与算法--选取算法(TopK) 如果说快速选取法所代表的是剪枝式的遍历操作--在递归树中找出一条通往第 k<script type="math/tex" ...

  9. Python 数据结构与算法——从二分图到寻找最大排列(Maximum Permutation)

    假设现在有 8 位有着特殊癖好的人去买票看电影,其中有一部分人得到了自己喜欢的座位,但大多数人并不满意.现在的问题是,如果这些人各自都有自己喜欢的座位(喜欢的座位有重叠,这是进行最大排列的前提,否则无 ...

  10. Python数据结构与算法(4.1)——递归

    Python数据结构与算法(4.1)--递归 0. 学习目标 1 递归 1.1 递归的基本概念 1.2 递归的重要性 1.3 递归三原则 1.4 递归的应用 2 递归示例 2.1 列表求和 2.2 汉 ...

最新文章

  1. Linux下添加PATH环境变量
  2. 【Windows 逆向】OD 调试器工具 ( OD 附加进程 | OD 调试器面板简介 | 反汇编窗口 | 寄存器窗口 | 数据窗口 | 堆栈窗口 )
  3. 《JavaWeb从入门到改行》注册时向指定邮箱发送邮件激活
  4. int类型数字特别大
  5. 一种无限循环轮播图的实现原理
  6. 一种数据库打天下?开源数据库选型应该注意什么?
  7. 二分法查找——C++代码
  8. windows C++删除非空文件夹
  9. gitee java pdf转图片_openOffice word转pdf,pdf转图片优化版
  10. 材料成形计算机辅助设计,材料成形及控制工程
  11. Ubuntu18搭建SVN可视化工具if.svnadmin
  12. GPS在无人驾驶中的定位作用与不足
  13. c语言中order函数,C语言order的用法
  14. java jmf获取图像_用JMF打开摄像头获取图像
  15. 什么是防抖和节流?区别是什么?
  16. [CTF] 关于php代码审计的MD5类的练习
  17. 求职-平安产险科技一二面
  18. 如何判断一件事值不值得做?
  19. WPF中GDI+图形图像的绘制:(五)绘制图像——蒙板效果
  20. 3G? 2G? 2.5G? 4G? 与 WIFI, GPRS,CDMA 3G无线上网

热门文章

  1. c 找文件服务器文件,Linux C/C++项目:虚拟文件服务器(功能匹配百度网盘)
  2. Linux进程通信中IPC对象——IPC_PRIVATE与ftok
  3. 使用Python,OpenCV创建动画GIF图和模因生成器
  4. Paper7:R-CNN
  5. LabVIEW色彩分类识别(基础篇—15)
  6. ffmpeg + opencv 把摄像头画面保存为mp4文件
  7. Ubuntu下安装Anaconda
  8. linux支持hd610显卡吗,HD610相当于什么显卡 HD610和HD630的区别 (全文)
  9. PCL中outofcore模块---基于核外八叉树的大规模点云的显示
  10. 理解OpenGL中帧缓存FrameBuffer 渲染缓存RenderingBuffer