顺序存储结构
结构struct{
数据类型 数组名data[数组最大长度MAXSIZE];
Int length;(线性表当前长度/数组当前数据个数)
}
封装3个属性
1.存储空间起始位置,数组data,它的存储位置就是线性表存储空间的存储位置
2.线性表最大存储容量:maxsize ,初始化后一般不变
3.线性表当前长度:length,时刻改变
地址计算方法
假设每个元素占C个存储单元(字节),LOC表示获得存储位置的函数
LOC( )= loc( )+C
LOC( )= loc( )+(i-1)*C
假设,线性表最大长度设置为10;当前长度为4;如下
var maxsize = 10;
var list ={
data:[1,2,3,4],
length:4
}
获取线性表第i个位置的元素
1 | function getitem(list,i){ |
在线性表第i个位置插入元素item
1 | function insertitem(list,i,item){ |
删除线性表第i个位置的元素
1 | function deleteitem(list,i){ |
小结
在存、读数据时,不管是那个位置,时间复杂度都是O(1).
而在插入或删除时,时间复杂度都是O(n);
比较适合元素个数稳定,不经常插入和删除元素,而更多操作是存取数据的应用。
优点:
1.无需为表示表中元素之间的逻辑关系而增加额外的存储空间
2.可以快速存取表中任意位置元素
缺点
1.插入和删除操作需要移动大量元素
2.当线性表长度变化较大时,难以确定存储空间的容量
3.容易造成存储空间的碎片