线性表
一个线性表是某类元素的一个集合,还记录着元素之间的一种顺序关系。
根据线性表的实际存储方式,分为两种实现模型:
顺序表,将元素顺序地存放在一块连续的存储区里,元素间的顺序关系由它们的存储顺序自然表示。
链表,将元素存放在通过链接构造起来的一系列存储块中。
顺序表的两种存储方式:
元素内置(一体式结构):表里存储的元素大小固定
元素外置(分离式结构):表里只存储链接
表中存储的两个信息
1.表中的元素集合
2.信息主要包括元素存储区的容量和当前表中已有的元素个数两项
增加元素
a. 尾端加入元素,时间复杂度为O(1)
b. 中间插入,时间复杂度为O(n)
删除元素
a. 删除表尾元素,时间复杂度为O(1)
b. 中间元素删除,时间复杂度为O(n)
Python中的顺序表
list和tuple
tuple是不可变类型,即不变的顺序表,因此不支持改变其内部状态的任何操作,而其他方面,则与list的性质类似。
list就是一种采用分离式技术实现的动态顺序表。
链表与顺序表的对比
链表失去了顺序表随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大,但对存储空间的使用要相对灵活。
链表与顺序表的各种操作复杂度如下所示:

链表的主要耗时操作是遍历查找
顺序表查找很快,主要耗时的操作是拷贝覆盖
线性表是基本的数据结构,包括顺序表和链表两种实现方式。顺序表存储元素连续,插入和删除操作的时间复杂度不同,尾部操作更快;链表虽然额外占用存储空间,但提供了更灵活的存储分配。Python中的list作为动态顺序表,是分离式结构。链表查找慢,但插入和删除操作相对较快。对比两者,顺序表随机访问优势明显,链表则在存储利用上更有优势。
850

被折叠的 条评论
为什么被折叠?



