"""author: zhao xian xin

不积跬步无以至千里"""

#定义双向链表 每一个结点

classNode(object):def __init__(self, item):

self.previous=None

self.item=item

self.next=None#定义链表

classTwoWayLinkList():"""链表基本属性"""

def __init__(self):

self.hearder=None

self.length=0"""头部插入"""

deffirstAdd(self, node):if self.hearder ==None:

self.hearder=nodeelse:

node.next=self.hearder

self.hearder.previous=node

self.hearder=node

self.length+= 1

"""尾部插入"""

deftailAdd(self, node):if self.length ==0:

self.firstAdd(node)else:

currentNode=self.hearderfor i in range(self.length - 1):

currentNode=currentNode.next

node.previous=currentNode

currentNode.next=node

self.length+= 1

"""根据指定索引 插入 对应结点"""

defindexInsert(self, index, node):assert index != 0 or index <= self.length, "超出索引"

if index == 1:

self.firstAdd(node)elif index == 2:

node.next=self.hearder.next

node.prevopus=self.hearder

self.hearder.next=node

self.length+= 1

elif index >self.length:

self.tailAdd(node)else:

currentNode=self.hearderfor i in range(1, index - 1):

currentNode=currentNode.next

node.prevopus=currentNode

node.next=currentNode.next

currentNode.next.previous=node

currentNode.next=node

self.length+= 1

"""根据指定位置 删除 结点"""

defdelNode(self, index):"""判断删除的索引是否在标准范围之中"""

assert index != 0 or index <= self.length, "超出索引"

if index == 1:

self.hearder=self.hearder.next

self.hearder.previous=Noneelif index == 2:

self.hearder.next=self.hearder.next.next

self.hearder.next.next.previous=self.hearderelse:

currentNode=self.hearderfor i in range(1, index - 1):

currentNode=currentNode.next

currentNode.next=currentNode.next.next

self.length-= 1

"""遍历节点"""

defrangeNode(self):assert self.length != 0 , "链表为空"currentNode=self.hearderfor i inrange(self.length):

element=currentNode.item

currentNode=currentNode.nextprint(element, end=" ")"""结点之间的排序 不许改变指针位置, 只需改变链表中元素位置"""

defsortNode(self):pass

"""快速排序"""

for i inrange(self.length):

currentNode=self.hearderfor j in range(0, self.length - i - 1):if currentNode.item >currentNode.next.item:

mid=currentNode.item

currentNode.item=currentNode.next.item

currentNode.next.item=mid"""别忘记 交换节点"""currentNode=currentNode.nextif __name__ == "__main__":

node= Node(2)

t=TwoWayLinkList()

t.firstAdd(node)print(t.rangeNode())"""尾部 插入元素"""t.tailAdd(Node(1))

t.tailAdd(Node(4))print(t.rangeNode())"""头部插入位置"""t.firstAdd(Node(3))print(t.rangeNode())"""根据索引插入对应的位置"""t.indexInsert(6, Node(5))print(t.rangeNode())"""根据指定位置 删除节点"""t.delNode(4)print(t.rangeNode())"""节点之间的 排序"""t.sortNode()print("======排序======")print(t.rangeNode())

python双向索引什么意思_Python 双向链表的实现相关推荐

  1. python双向索引什么意思_python字典支持双向索引吗

    Python中的字典是另一种可变容器模型,且可存储任意类型对象.字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,字典是无序 ...

  2. python双向索引什么意思_(转)Python 实现双向链表(图解)

    原文:https://blog.csdn.net/qq490691606/article/details/49948263 Python 实现双向链表(图解) 双向链表 双向链表也叫双链表,是链表的一 ...

  3. python双向索引是什么意思_Python集合支持双向索引。

    [简答题]任务三:定律应用 [填空题]震动液化诱发因素的土质条件有哪些 [判断题]地震要素中引起砂土液化的因素是地震波. [单选题]材料HT200中"200"表示( ) [单选题] ...

  4. python deque索引超出范围_Python基础语法

    学习Python的四个要素有数据,函数,条件循环和模块 一.数据 数据是Python编程过程中的原材料,通过导入数据,对数据进行操作,实现预先设想的功能.数据共有5种类型,分别是字符串.数字.容器.布 ...

  5. python数组索引和切片_python numpy数组的索引和切片的操作方法

    NumPy - 简介 NumPy 是一个 Python 包. 它代表 "Numeric Python". 它是一个由多维数组对象和用于处理数组的例程集合组成的库. Numeric, ...

  6. python 根据索引取值_Python基础知识2

    运行Python程序的两种方式 运行Python程序的三步骤(与文本编辑器对比) IDE工具----pycharm 注释 变量 基本数据类型及其内置方法 垃圾回收(GC)机制 基本运算符 流程控制(i ...

  7. python 通过索引迭代列表_Python的索引迭代

    Python中,迭代永远是取出元素本身,而非元素的索引. 对于有序集合,元素确实是有索引的.有的时候,我们确实想在 for 循环中拿到索引,怎么办? 方法是使用 enumerate() 函数: > ...

  8. python 通过索引迭代列表_python – NumPy – 迭代2D列表和打印(行,列)索引

    使用NumPy和/或Pandas处理2D列表时遇到困难: >获取所有元素的唯一组合的总和,而无需再次从同一行中选择(下面的数组应该是81种组合). >打印组合中每个元素的行和列. 例如: ...

  9. python中双向索引_Python 字典支持双向索引。Python 集合也支持双向索引

    Python 字典支持双向索引.Python 集合也支持双向索引 答:错 推的策略适用于用户多而广,需求总量大的产品促销 答:× 中国保险条款中属于一般附加险别的有( ) 答:短量险 钩损险 Next ...

最新文章

  1. 实验四 主存空间的分配和回收
  2. 【java】java反射机制,动态获取对象的属性和对应的参数值,并属性按照字典序排序,Field.setAccessible()方法的说明【可用于微信支付 签名生成】...
  3. mysql date week_mysql weekday(date)/subdate(date,间隔天数)查询年龄/本月/周过生日
  4. 统计学习方法笔记(一)-k近邻算法原理及python实现
  5. Oracle管理拾遗(长期更新)
  6. 关于数据精度的一些事
  7. Anaconda——复制Conda的虚拟环境
  8. windows 不能确定用户和计算机名称
  9. WPF——自定义日历
  10. 软件项目中的角色以及英文简称
  11. 硬件探索——数字钟的设计与制作
  12. Win7 Hiberfil.sys pagefile.sys
  13. html播放器怎么删除,风行如何完全删除?风行播放器彻底删除图文教程汇总
  14. html5 竖线的实现,border 实现竖线
  15. windows删除文件夹时提示:你需要权限来执行此操作
  16. Python语法--Mooc七月
  17. 使用 Laragon 在 Windows 中快速搭建 Laravel 本地开发环境 (转)
  18. Pandas操作总结
  19. java8 —— Stream( 流 )
  20. 深度之眼 PyTorch 训练营第 4 期(5):构建模型 torch.nn.Module

热门文章

  1. linux下vi编辑器的命令大全,linux下VI编辑器命令大全(超级完整版)
  2. php 小程序页面传参,介绍小程序中传递参数的实现方法
  3. 在JAVA中把JSON数据格式化输出到控制台
  4. cmd设置mysql初始密码_windows下mysql初始密码设置
  5. redis-cli 链接redis命令
  6. Combobox绑定数据源DataSet
  7. loadrunner提示:Cannot save the license information because acceses to the registry is denied
  8. 模型有锯齿_小雕课堂 | 最好的抗锯齿,画质保留提升帧数
  9. java面试-JVM调优和参数配置
  10. 前端名称命名--英文字母