(多维)数组——线性表中的数据元素可以是线性表,但所有元素的类型相同。
广义表——线性表中的数据元素可以是线性表,且元素的类型可以不相同。
数组的基本操作
⑴ 存取:给定一组下标,读出对应的数组元素;
⑵ 修改:给定一组下标,存储或修改与其相对应的数组元素。
存取和修改操作本质上只对应一种操作——寻址
数组没有插入和删除操作,所以,不用预留空间,适合采用顺序存储。
数组的存储结构与寻址——一维数组
设一维数组的下标的范围为闭区间[l,h],每个数组元素占用 c 个存储单元,则其任一元素 ai 的存储地址可由下式确定:
Loc(ai)=Loc(al)+(i-l)×c
常用的映射方法有两种:
按行优先:先行后列,先存储行号较小的元素,行号相同者先存储列号较小的元素。
按列优先:先列后行,先存储列号较小的元素,列号相同者先存储行号较小的元素。
按行优先存储的寻址
aij前面的元素个数=整行数×每行元素个数+本行中aij前面的元素个数
=(i -l1)×(h2 -l2+1)+(j -l2)
按列优先存储的寻址
设数组开始存放位置 LOC( 0, 0 ) = a,每个元素占用 l 个存储单元,
则a[i][j]的存储地址:LOC ( i, j ) = a + ( j *n +i ) * l