1.线性表(linear list)

线性表: 是一种数据结构, 一个线性表是n个具有相同特性的数据元素的有限序列

线性表的实际存储方式,分为两种实现模型:顺序表和链表

2.顺序表

  • 申请连续的存储空间
  • 依次存入数据
  • 数据之间有顺序关系
  • 取数据时根据下标(偏移量),一步计算出对应的内存地址
  • 时间复杂度是O(1)

3.顺序表基本形式

  • 顺序表的基本布局
    Loc(ei) = Loc(e0) + c*i
    元素存储的物理地址(实际内存地址) = 存储区的起始位置 + 逻辑地址(第i个元素)*存储单元大小
  • 元素外置的顺序表
 元素的大小不统一
 使用了元素外置,能存不同的数据类型
 此时存储存储单元大小(c)不在是数据元素的大小,而是存储一个链接地址的大小

4.顺序表的结构

线性表基础知识总结

操作部分包含元素存储区的容量和元素个数两项

5. 顺序表的基本实现方式

线性表基础知识总结

  • 一体式结构
    存储表信息单元与元素存储区连续在一起
    优点:整体性强,易于管
    缺点:元素存储区创建后便固定了

  • 分离式结构
    图b为分离式结构,表对象里只保存与整个表有关的信息(即容量和元素个数),实际数据元素存放在另一个独立的元素存储区里,通过链接与基本表对象关联。

  • 使用了分离式结构,添加数据时,id永远不发生变化

6.动态顺序表

  • 分离式结构动态顺序表:
    若将数据区更换为存储空间更大的区域,则可以在不改变表对象的前提下对其数据存储区进行了扩充,所有使用这个表的地方都不必修改。

6.1 线性扩充

每次扩充增加固定数目的存储位置,如每次扩充增加10个元素位置,这种策略可称为线性增长。

特点:节省空间,但是扩充操作频繁,操作次数多。

6.2倍数扩充

每次扩充容量加倍,如每次扩充增加一倍存储空间。

特点:减少了扩充操作的执行次数,但可能会浪费空间资源。以空间换时间,推荐的方式。

7.python顺序表

list —> 元素个数可变的线性表

tuple —> 不变的顺序表

dict --> 哈希表

list就是一种采用分离式技术实现的动态顺序表。用list.append(x) (或 list.insert(len(list), x),即尾部插入)比在指定位置插入元素效率高的原因。

以上内容仅是代表个人总结 若有错误之处,还请批评指正,欢迎大家一起学习!

相关文章: