线性顺序存储结构

来源:互联网 发布:朝勇投资有限公司 知乎 编辑:程序博客网 时间:2024/05/23 13:03

线性顺序存储结构:

线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。

线性表(a1,a2,…,an)的顺序存储如下:

物理上的存 储方式事实上就是在内存中找个初始地址,然后通过占位的形式,把一定的内存空间给占了,然后把相同数据类型的数据元素依次放在这块空地中。

总结下,顺序存储结构封装需要三个属性:

存储空间的起始位置,数组data,它的存储位置就是线性表存储空间的存储位置。

线性表的最大存储容量:数组的长度MaxSize。

线性表的当前长度:length。

注意,数组的长度与线性表的当前长度需要区分一下:数组的长度是存放线性表的存储空间的总长度,一般初始化后不变。而线性表的当前长度是线性表中元素的个数,是会变化的。

接下来看线性表顺序存储的结构代码:

define MAXSIZE 20
typedef int ElemType;
typedef struct
{
ElemType data[MAXSIZE];
int length; // 线性表当前长度
} SqList;

大家看到了,这里我们封装了一个结构,事实上就是对数组进行封装,增加了个当前长度的变量罢了。

线性表的定义充分考虑到很多军师级别领导的智商指数,所以决定从1开始回归正常思维。

假设ElemType占用的是c个存储单元(字节),那么线性表中第i+1个数据元素和第i个数据元素的存储位置的关系是(LOC表示获得存储位置的函数):LOC(ai+1) = LOC(ai) + c

所以对于第i个数据元素ai的存储位置可以由a1推算得出:LOC(ai) = LOC(a1) + (i-1)*c

结合下图来理解:

通过这个公式,我们可以随时计算出线性表中任意位置的地址,不管它是第一个还是最后一个,都是相同的时间。那么它的存储时间性能当然就为0(1),我们通常称为随机存储结构。

1 0
原创粉丝点击