线性表的顺序存储结构详解
线性表是一种 逻辑结构 ,它在计算机中是如何存储的呢?有两种类型:顺序存储结构和链式存储结构,接下来一起看看顺序存储结构吧!!
1.定义:用一段地址连续的存储单元存储线性表中的元素
2.顺序存储结构利用一维数组实现,为什么呢?
因为线性表中的数据元素的类型相同,一维数组本来就是用来存储一组具有相同数据类型的元素的,因此线性表的顺序存储结构就利用一维数组实现!!!
3.描述顺序存储结构
#define MAXSIZE 50 //定义存储空间的初始分配量
typedef int ElemType //以后想定义int类型的变量就可以用ElemType代替
typedef struct
{
ElemType data[MAXSIZE];
int length;
}
说明:
(1)data表示数组的首地址,MAXSIZE表示数组的最大容量,
(2)length表示数组当前的长度(因为你给数组定义了最大容量,但这些容量不一定会全部用,所以应该知道当前数组的长度)
总结:顺序存储结构描述的三要素:data,MAXSIZE,length
4.区分:线性表长度和数组长度
线性表长度是线性表中所含元素的个数(动态变化)
数组长度是数组存放线性表的存储空间的长度(一般不变或者是用malloc函数动态分配)
数组长度>=线性表长度
5.线性表中元素的序号和数组下标之间的关系
线性表中的元素从1开始
数组下标从0开始
第ai个数据元素对应数组下标为i-1
6.顺序存储结构地址的计算方法
地址:内存单元的编号
不管是什么类型得的数据元素,它在内存中都占有一定的存储单元空间,由于类型不同,所占的存储单元大小也不用,雅思5.5是什么水平假设占用s个存储单元,LOC()为取位置函数,对第i-1个元素取位置LOC(ai-1)然后再加上s得到LOC(ai)
由此可知如果已知存放线性表的数组起始地址就可以轻松的获取到线性表中的任意元素的地址
LOC(ai)=LOC(a1)+(n-1)*s
7.顺序存储结构的读取时间复杂度O(1),它具有随机存取的特点,当需要大量的查找工作时,采用顺序表