数据结构3.1线性表的推广——数组

数组(array)定义

数组可看成一种特殊的线性表,其数据元素本身也是一个线性表。假设一个二维数组A(m*n)有m行n列,那么可以把这个二维数组看成一个线性表:
A = (a0,a1…am-1)
其中,每个元素ai是一个行向量组成的线性表:
ai = (ai 0,ai 1…ai n-1) (0<=i<=m-1)
也可以看作是一个由列向量组成的元素组成的线性表。
那么以此类推,一个n维数组可以看成是n-1维数组的线性表。

数组的基本操作

因为数组一旦建立,数组的元素个数和元素关系就不能再改变,因此无元素插入删除操作,其基本操作主要是元素的读取和更新。
1->读取操作value(A,index1,index2,…,indexd),其功能是返回由下标index1,index2,…,indexd确定的数组A的对应元素值
2->更新操作assign(A,e,index1,index2,…,indexd),其功能是将e的值赋给数组A中下标为index1,index2,…,indexd的元素
3->输出操作list(A),其功能是输出数组A的全部元素

数组存储结构

由数组定义可知,用顺序存储结构最为理想。
而因次序约定问题又把二维数组的存储方式分为行优先存储方式以及列优先存储方式
按以上两种存储方式存储的数组,只要知道起始结点的存放地址(基地址)、维数和每维的上下界,以及每个数组元素所占用的字节数,就能将数组元素的存放地址表示为其下标的线性函数。一旦规定了数组的维数和各维的长度,便可为他分配存储空间。
以行优先存储方式存储的数组举例,每个元素占L个字节,其ai j的地址计算公式为:
LOC(ai j) = LOC(a0 0) + (i * n + j) * L
推广得n维数组各维长度为bi,数组中每个数据元素对应于一组下标(j1,j2…jn),(0<=ji<=bi - 1)(1<=i<=n)有:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值