在稀疏矩阵的顺序存储中,利用一个数组来存储非零元素,该数组的长度

题目

在稀疏矩阵的顺序存储中,利用一个数组来存储非零元素,该数组的长度应()对应三元组线性表的长度。

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

对稀疏矩阵进行压缩存储,矩阵中每个非零元素对应的三元组包括该元素的__________ _______、__________和非零元素值三项信息。


参考答案行下标 列下标

第2题:

在稀疏矩阵的顺序存储中,利用一个数组来存储非零元素,该数组的长度应等于对应三元组线性表的长度。()

此题为判断题(对,错)。


正确答案:√

第3题:

●假设一个6阶的下三角矩阵B按列优先顺序压缩存储在一维数组A中,其中A[0]存储矩阵的第一个元素b11,则A[14]存储的元素是 (52) 。

(52) A.b63

B.b62

C.b64

D.b53


正确答案:A
【解析】此题要寻找A[k]与b[i][j]之间的关系。6阶下三角阵b从第1列到第6列,每一列的元素个数依次为:6、5、4、3、2、1,元素总数为6×(6+1)/2=21。按列顺序存放在一维数组A[21]中(b11存放在A[0]中),列之前的第1列到第j-1列元素个数为:6+5+4+…+(6-(j-1)+1)=(6+6-(j-1)+1)×(j-1)/2=(14-j)×(j-1)/2。第i列上的第i行之前有i-j个元素。因此有:k=(14-i)×(j-1)/2+i-j。
已知k=14,根据每一列的元素个数,显然列号j应该满足条件2<j≤3,即j应该取值3。
于是有:k=(14-j)×(i-1)/2+i-j=(14-3)×(3-1)/2+j-3=8+i
i=k-8=14-8=6。所以,A[14]存储的是元素b63。

第4题:

设有如下所示的下三角矩阵A[0..8,0..8],将该三角矩阵的非零元素(即行下标不小于列下标的所有元素)按行优先压缩存储在数组M[1..m]中,则元素A[i,j](0≤i≤8,j≤i)存储在数组M的(58)中。

A.

B.

C.

D.


正确答案:A
解析:本题中注意M数组从1开始,A[i,j]前有i行,元素个数分别为1,2,3……i共i*(i+1)/2个,加上A[i,0],A[i,1],……A[i,j]共j+1个,总计i*(i+1)/2+j+l。对应关系:M[1]-A[0,0],M[2]-A[1,0],……M[i*(i+1)/2+j+1]-A[i,j]。

第5题:

假设一个6阶的下三角矩阵B按列优先顺序压缩存储在一维数组A中,其中A[0]存储矩阵的第二个元素b11,则A[14]存储的元素是(52)。

A.b63

B.b62

C.b64

D.b53


正确答案:A
解析:此题要寻找A[k]与b[i][j]之间的关系。6阶下三角阵b从第1列到第6列,每一列的元素个数依次为:6、5、4、3、2、1,元素总数为6×(6-1)/2=21。按列顺序存放在一维数组A[21]中(b11存放在A[0]中),列之前的第1列到第j-1列元素个数为:6+5+4+…+(6-(j-1)+1);(6+6-(j-1)+1)×(j-1)/2=(14-j)×(j-1)/2。第i列上的第i行之前有i-j个元素。因此有:k=(14-i)×(j-1)/2+i-j。已知k=14,根据每一列的元素个数,显然列号j应该满足条件2于是有:k=(14-j)×(i-1)/2+i-j=(14-3)×(3-1)/2+j-3=8+ii=k-8=14-8=6。所以,A[14]存储的是元素b63。

第6题:

设下三角矩阵A:

如果以行序为主序将A的非零元素存储在一维数组B[n(n+1)/2]中,那么A的第i行第j列的非零元素aij(i≥j)在数组B中的下标为______。


正确答案:B
解析:按行优先存储就是把矩阵中的数据一行一行地顺次存入存储单元,此题中就按a11、a21、a22、a31、a32、a33、…、an1、an2、an3、…、ann的顺序来存储。从第1行到第i-1行(a11~ai-1,i-1)共有个非零元素;在第i行,从ai1至aij共有j个非零元素,因此a11至aij共有个非零元素,而a11对应的下标为0,于是aij对应的下标为。

第7题:

阅读以下说明和流程图,将应填入(n)处的字句写在对应栏内。

【说明】

在一个矩阵中,如果其零元素的个数远远多于其非零元素的个数时,称这样的矩阵为稀疏矩阵。稀疏矩阵通常采用三元组数组表示。每个非零元素用一个三元组来表示,即非零元素的行号、列号和它的值。然后按某种顺序将全部非零元素的三元组存于一个数组中。例如,对于以下二维数组:

int x[3][4]={{1,0,0,0},{0,5,0,0),{0,0,7,2}};

可用以下数组a来表示:

int a[][3]={{3,4,4},{0,0,1},{1,1,5),{2,2,7},{2,3,2}};

其中三元数组a的第1行元素的值分别存储稀疏矩阵×的行数、列数和非零元素的个数。

下面的流程图描述了稀疏矩阵转换的过程。

【流程图】


正确答案:(1)a[0][2]=W; (2)x[i][j]≠0; (3)a[k][2]=x[i][j]; (4)k++; (5)i++;
(1)a[0][2]=W; (2)x[i][j]≠0; (3)a[k][2]=x[i][j]; (4)k++; (5)i++; 解析:本题考查程序流程图及数组的操作。
根据题目的意思,本题的流程图是用来描述稀疏矩阵转换过程的。而三元数组d的第1行元素的值分别用来存储稀疏矩阵x的行数、列数和非零元素个数,在第(1)空位置处,前面已经分别存储了稀疏矩阵x的行数和列数,只差非零元素的个数没有存储进数组a。因此,此空应该填a[0][2]=W。
在第(2)空的前面有两条判断语句,我们可以看出它们是为了保证取到的元素是稀疏矩阵中的元素,再往下我们应该判断此元素是否是0,因此,此空应该填x[i][j]≠0。
根据程序流程图,如果第(2)空中的条件为真,即取到的元素不为0,那么我们应该将该元素存放到三元数组a中,第(3)空的前面两条语句已经分别用于存储了稀疏矩阵非0元素的行号和列号,那么接下来应该是保存其值。因此,此空的答案是 a[k][2]=x[i][j]。
由题目中对三元数组a的描述可以知道,三元数组a的每一行只存储3个元素。再看流程图,第(4)空的前面三条语句都表示向三元数组a中存储一个元素。因此,如果再要往数组中添加元素,就需要存放到另外一行。因此,第(4)空应该是将数组的行号加1,即 k++。
结合流程图中三个判断语句的结构和作用来分析,第(5)空应该是i++,它的作用是保证能取到稀疏矩阵中每一行的元素。

第8题:

有一个长度为7的整形数组,里面存储了采用完全二叉树实现的最小堆,该数组中的所有元素都紧密存储,没有空隙,请问,该数组中不可能的元素序列是()

A.1234567

B.1243567

C.1253467

D.1423567


正确答案:D

第9题:

阅读以下说明和流程图将应填入(n)处的字句写在答题纸的对应栏内

【说明】

在一个矩阵中如果其零元素的个数远远多于其非零元素的个数时称这样的矩阵为稀疏矩阵稀疏矩阵通常采用三元组数组表示每个非零元素用一个三元组来表示即非零元素的行号列号和它的值然后按某种顺序将全部非零元素的三元组存于一个数组中例如对于以下二维数组

其中三元数组a的第行元素的值分别存储稀疏矩阵x的行数列数和非零元素的个数

下面的流程图描述了稀疏矩阵转换的过程

【流程图】


答案:


解析:


本题考查程序流程图及数组的操作



结合流程图中三个判断语句的结构和作用来分析第(5)空应该是i++它的作用是保证能取到稀疏矩阵中每一行的元素

第10题:

●设下三角矩阵(上三角部分的元素值都为 0)A[0..n,0..n]如下所示,将该三角矩阵的所有非零元素(即行下标不小于列下标的元素)按行优先压缩存储在容量足够大的数组M[ ]中(下标从1 开始),则元素 A[I,j](O≤i≤n,j≤i)存储在数组M 的 (57) 中。


正确答案:A
试题(57)分析本题考查数组存储的基础知识。按行方式存储时,元素A[i,j]之前的元素个数为(1+2+…+i+j),由于数组M的下标从1开始,因此,存储A[i,j]的是M[1+2+…+i+j+1],即M[i(i+1)/2+j+1]。参考答案(57)A

更多相关问题