1.什么是列表
❖在前面基本数据结构中,采用PythonList来实现了多种线性数据结构
❖列表List是一种简单强大的数据集结构,提供了丰富的操作接口
但并不是所有的编程语言都提供了List数据类型,有时候需要程序员自己实现。
❖列表是一种数据项按照相对位置存放的数据集
特别的,被称为“无序表unordered list”
其中数据项只按照存放位置来索引,如第1个、第2个……、最后一个等。(为了简单起见,假设表中不存在重复数据项)
❖如一个考试分数的集合“54,26,93,17,77和31”
❖如果用无序表来表示,就是[54,26,93,17,77,31]
2.抽象数据类型:无序表List
2.1无序表List的操作如下:
List():创建一个空列表
add(item):添加一个数据项到列表中,假设item原先不存在于列表中
remove(item):从列表中移除item,列表被修改,item原先应存在于表中
search(item):在列表中查找item,返回布尔类型值
isEmpty():返回列表是否为空
size():返回列表包含了多少数据项
append(item):添加一个数据项到表末尾,假设item原先不存在于列表中
index(item):返回数据项在表中的位置
insert(pos, item):将数据项插入到位置pos,假设item原先不存在与列表中,同时原列表具有足够多个数据项,能让item占据位置pos
pop():从列表末尾移除数据项,假设原列表至少有1个数据项
pop(pos):移除位置为pos的数据项,假设原列表存在位置pos
3.采用链表实现无序表
为了实现无序表数据结构,可以采用链接表的方案。
❖虽然列表数据结构要求保持数据项的前后相对位置,
但这种前后位置的保持,
并不要求数据项依次存放在连续的存储空间
❖如下图,数据项存放位置并没有规则,
但如果在数据项之间建立链接指向,就可以保持其前后相对位置
3.1 链表实现:节点Node
❖链表实现的最基本元素是节点Node
每个节点至少要包含2个信息:数据项本身,以及指向下一个节点的引用信息
注意next为None的意义是没有下一个节点了,这个很重要
class Node:
def _init_(self,initdata):
self.data=initdata
self.