顺序表的定义:
顺序表——用顺序存储的方式实现线性表栓徐存储。把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现
顺序表的实现——静态分配:(静态分配是将顺序表一次性开辟一个连续的空间,这些空间一旦确定则不可改变空间大小)
顺序表的实现——动态分配
顺序表的特点:
- 随机访问,即可以在O(1)时间内找到第i个元素。
- 存储密度高,每个节点只存储数据元素。
- 扩展容量不方便(即便采用动态分配的方式实现,扩展长度的时间复杂度也比较高)。
- 插入,删除操作不方便,需要移动大量元素。
总结:
顺序表——插入
首先我们要清楚一点的是数组的位置对应哪个下标,data[10]定义的长度为10,对应的位序从1开始,下标则从0开始。
ListInsert(L,3,3)的意思是,将数字3插入到L表中数组data[2]位序为3下标为2的内存空间中。为了能将数据插入,需要将
data[2]的数据及后面数组往后都移动一位,腾出data[2]的空间将3放进去。
在我们插入数据的时候,要学会思考代码的“健壮性”意思是我们这个代码能否给使用者反馈,而不至于在出现错误时无从下手。
例如这个顺序表中,当数组空间被占满的时候,能够进行安全校验,开发者要有能够预判各种异常状况的思维。
插入操作的时间复杂度:
顺序表——删除
这里要特别注意&的使用
删除操作的时间复杂度
插入删除总结:
顺序表——查找
结构类型的比较:
按值查找的时间复杂度:
查找总结: