计算机软件就是基础软件基础之数据结构-数组

计算机软件就是基础软件基础之数据结构-数组

ID:38387948

大小:242.50 KB

页数:38页

时间:2019-06-11

计算机软件就是基础软件基础之数据结构-数组_第1页
计算机软件就是基础软件基础之数据结构-数组_第2页
计算机软件就是基础软件基础之数据结构-数组_第3页
计算机软件就是基础软件基础之数据结构-数组_第4页
计算机软件就是基础软件基础之数据结构-数组_第5页
资源描述:

《计算机软件就是基础软件基础之数据结构-数组》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第二章 常用数据结构及其运算----数组9/7/20211主要介绍多维数组的概念及在计算机中的存放,特殊矩阵的压缩存储及相应运算,广义表的概念和存储结构及其相关运算的实现。通过学习,要求掌握如下内容:1.多维数组的定义及在计算机中的存储表示;2.对称矩阵、三角矩阵、对角矩阵等特殊矩阵在计算机中的压缩存储表示及地址计算公式;3.稀疏矩阵的三元组表示及转置算法实现;4.稀疏矩阵的十字链表表示及相加算法实现;9/7/20212多维数组多维数组的概念数组是大家都已经很熟悉的一种数据类型,几乎所有高级语言程序设计

2、中都设定了数组类型。在此,我们仅简单地讨论数组的逻辑结构及在计算机内的存储方式。1.一维数组一维数组可以看成是一个线性表或一个向量,它在计算机内是存放在一块连续的存储单元中,适合于随机查找。这在线性表的顺序存储结构中已经介绍。9/7/202132.二维数组二维数组可以看成是向量的推广。例如,设A是一个有m行n列的二维数组,则A可以表示为:9/7/20214在此,可以将二维数组A看成是由m个行向量[X0,X1,…,Xm-1]T组成,其中,Xi=(ai0,ai1,….,ain-1),0≤i≤m-1;也可以将

3、二维数组A看成是由n个列向量[y0,y1,……,yn-1]组成,其中yi=(a0i,a1i,…..,am-1i),0≤i≤n-1。由此可知二维数组中的每一个元素最多可有两个直接前驱和两个直接后继(边界除外),故是一种典型的非线性结构。aijaij-1ai-1jaij+1ai+1j9/7/202153.多维数组同理,三维数组最多可有三个直接前驱和三个直接后继,三维以上数组可以作类似分析。因此,可以把三维以上的数组称为多维数组,多维数组可有多个直接前驱和多个直接后继,故多维数组是一种非线性结构。多维数组在计

4、算机内的存放怎样将多维数组中元素存入到计算机内存中呢?由于计算机内存结构是一维的(线性的),因此,用一维内存存放多维数组就必须按某种次序将数组元素排成一个线性序列,然后将这个线性序列顺序存放在存储器中,具体实现方法在下一节介绍。9/7/202161.存放规则行优先顺序也称为低下标优先或左边下标优先于右边下标。具体实现时,按行号从小到大的顺序,先将第一行中元素全部存放好,再存放第二行元素,第三行元素,依次类推……在BASIC语言、PASCAL语言、C/C++语言等高级语言程序设计中,都是按行优先顺序存放的

5、。例如,对刚才的Am×n二维数组,可用如下形式存放到内存:a00,a01,…a0n-1,a10,a11,...,a1n-1,…,am-10,am-11,…,am-1n-1。即二维数组按行优先存放到内存后,变成了一个线性序列(线性表)。因此,可以得出多维数组按行优先存放到内存的规律:最左边下标变化最慢,最右边下标变化最快,右边下标变化一遍,与之相邻的左边下标才变化一次。因此,在算法中,最左边下标可以看成是外循环,最右边下标可以看成是最内循环。9/7/202172.地址计算由于多维数组在内存中排列成一个线性

6、序列,因此,若知道第一个元素的内存地址,如何求得其他元素的内存地址?我们可以将它们的地址排列看成是一个等差数列,假设每个元素占l个字节,元素aij的存储地址应为第一个元素的地址加上排在aij前面的元素所占用的单元数,而aij的前面有i行(0~i-1)共i×n个元素,而本行前面又有j个元素,故aij的前面一共有i×n+j个元素,设a00的内存地址为LOC(a00),则aij的内存地址按等差数列计算为LOC(aij)=LOC(a00)+(i×n+j)×l。同理,三维数组Am×n×p按行优先存放的地址计算公式

7、为:LOC(aijk)=LOC(a000)+(i×n×p+j×p+k)×l。9/7/20218同理,三维数组Am×n×p按行优先存放的地址计算公式为:LOC(aijk)=LOC(a000)+(i×n×p+j×p+k)×l。9/7/20219列优先顺序1.存放规则列优先顺序也称为高下标优先或右边下标优先于左边下标。具体实现时,按列号从小到大的顺序,先将第一列中元素全部存放好,再存放第二列元素,第三列元素,依次类推……在FORTRAN语言程序设计中,数组是按列优先顺序存放的。例如,对前面提到的Am×n二维数

8、组,可以按如下的形式存放到内存:a00,a10…,am-10,a01,a11,…,am-11,…,a0m-1,a1m-1,...,am-1n-1。即二维数组按列优先存放到内存后,也变成了一个线性序列(线性表)。因此,可以得出多维数组按列优先存放到内存的规律:最右边下标变化最慢,最左边下标变化最快,左边下标变化一遍,与之相邻的右边下标才变化一次。因此,在算法中,最右边下标可以看成是外循环,最左边下标可以看成是最内循环。9/7/2021102.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。