python实现双向链表 -- 详细思路分析

Python014

python实现双向链表 -- 详细思路分析,第1张

链表的每个节点都有两个指针,一个指向直接后继,一个指向直接前驱。在双向链表的任意一个节点都能很方便的访问其前后节点。其基本结构如下:

双向链表和单向链表只有在insert、append、remove、add方法上有差别,因此这里可以 使用面向对象的思想 ,继承于单向链表,然后重写这四种方法。

双向链表的节点比单向链表多一个prev指针指向前一个节点

作用: 在链表头部添加元素

作用: 在指定位置插入元素

作用: 在链表尾部添加元素

作用: 删除指定位置元素

学习链表,建议还是从C语言开始,

不建议在python上练习链表,为操作方便python中早已封装定义好了自己的数据格式,其中很多格式可以完美的实现链表操作,例如最简单的:

l = []

l.append(1)

l.append(2)

访问方式,(数组方式) l[0],l[1]

(链表方式) l.pop() l.push() l.insert() l.remove()

总之,python中有更多方便的替代方法。

在python中,list index out of range意思是列表的索引分配超出列范围。

对于有序序列: 字符串 str 、列表 list 、元组 tuple进行按索引取值的时候,默认范围为 0 ~ len(有序序列)-1,计数从0开始,而不是从1开始,最后一位索引则为总长度减去1。

当然也可以使用负数表示从倒数第几个,计数从-1开始,则对于有序序列,总体范围为 -len(有序序列) ~ len(有序序列)-1,如果输入的取值结果不在这个范围内,则报这个错。

解决办法:检查索引是否在 -len(有序序列) ~ len(有序序列)-1 范围内,修改正确。如下图,len(a)=2,则对于有序序列,总体范围为 0~ 1。

扩展资料:

在Python编程语言中List 是标准类库中的一个类,可以简单视之为双向链表,以线性列的方式管理物件集合。

list 的特色是在集合的任何位置增加或删除元素都很快,但是不支持随机存取。list 是类库提供的众多容器(container)之一,除此之外还有vector、set、map、…等等。

list() 方法用于将元组转换为列表。注:元组与列表是非常类似的,区别在于元组的元素值不能修改,元组是放在括号中,列表是放于方括号中。

list 以模板方式实现(即泛型),可以处理任意型别的变量,包括使用者自定义的资料型态例如:它可以是一个放置整数(int)型态的 list、也可以是放置字串(char 或 string)型态的 list、或者放置使用者自定类别(user-defined class)的 list。

参考资料:百度百科——python