线性表的顺序表示
线性表的顺序表示又称为顺序存储结构或顺序映像。
顺序存储定义:
把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。
特点:逻辑上相邻的元素,物理上也相邻。
顺序存储方法:用一组地址连续的存储单元依次存储线性表的元素。
利用数组V[n]来实现
注意:在语言中数组的下标是从0开始,即:V[n]的有效范围是从 V[0]~V[n-1]
线性表顺序存储特点:
- 逻辑上相邻的数据元素,其物理上也相邻;
- 若已知表中首元素在存储器中的位置,则其他元素存放位置亦可求出(利用数组V[n]的下标)。
设首元素a1的存放地址为LOC(a1)(称为首地址),
设每个元素占用存储空间(地址长度)为L字节,
则表中任一数据元素的存放地址为:
LOC ( ai+1 ) = LOC( ai ) + L
LOC ( ai ) = LOC( a1 ) + L *(i -1)
线性表的顺序存储结构示意图
访问指定元素时无需从头遍历,通过计算便可获得对应地址,其时间复杂度为O(1)
如果元素的大小不统一,则须采用图b的元素外置的形式,将实际数据元素另行存储,而顺序表中各单元位置保存对应元素的地址信息(即链接)。由于每个链接所需的存储量相同,通过上述公式,可以计算出元素链接的存储位置,而后顺着链接找到实际存储的数据元素。注意,上图中的c不再是数据元素的大小,而是存储一个链接地址所需的存储量,这个量通常很小。
上图这样的顺序表也被称为对实际数据的索引,这是最简单的索引结构。