3.2、数据结构-数组、矩阵和广义表

( )是对稀疏矩阵进行压缩存储的方式。
A. 二维数组和双向链表
B. 三元组顺序表和十字链表
C. 邻接矩阵和十字链表
D. 索引顺序表和双向链表

正确答案是 B。
解析
本题考查的是数组与矩阵。
存储矩阵的一般方法是采用二维数组,其优点是可以随机地访问每一个元素,因而能够较容易地实现矩阵的各种运算。但对于稀疏矩阵而言,若用二维数组来表示,会重复存储很多个0,浪费空间,而且要花费时间来进行零元素的无效计算。所以必须考虑对稀疏矩阵进行压缩存储。
稀疏矩阵的三元组表的顺序存储结构称为三元组顺序表,常用的三元组表的链式存储结构是十字链表。所以本题答案选B。

某n阶的三对角矩阵A如下图所示,按行将元素存储在一维数组M中,设a1,1存储在M[1],那么ai,j(1<=i,j<=n且ai,j位于三条对角线中)存储在M( )。
在这里插入图片描述

A. i+2j
B. 2i+j
C. i+2j-2
D. 2i+j-2

正确答案是 D。
解析
本题考查数据结构-对角矩阵基础知识。
这类题型可以直接用实例来排除错误选项。a11存在M[1],将i=1,j=1带入选项,A、B不正确。然后根据题干描述按行存储,下一个元素应该是a12,存放在M[2]中,将i=1,j=2带入选项,只有D选项符合题意。

设某n阶三对角矩阵Anxn的示意图如下图所示。若将该三对角矩阵的非零元素按行存储在一维数组Bk中,则k与i、j的对应关系是( )。
在这里插入图片描述

A. k=2i+j-2
B. k=2i-j+2
C. k=3i+j-1
D. K=3i-j+2

正确答案是 A。
解析
该题最简单的解题思路是代入法。当i=1,j=1时,k=1。
选项A:k=2i+j-2=2+1-2=1;
选项B:k=2i-j+2=2-1+2=3;
选项C:k=3i+j-1=3+1-1=3;
选项D:k=3i-j+2=3-1+2=4。
此时可以除排B,C,D,直接选A。若用一个例子,不能排除所有错误选项,则而举一个例子来进行代入,排除更多错误选项。

二维数组a[1…N,1…N]可以按行存储或按列存储。对于数组元素ai,j,当( )时,在按行和按列两种存储方式下,其偏移量相同。
A. i≠j
B. i=j
C. i>j
D. i<j

正确答案是 B。
解析
i和j相等,那么这时候的行列是一样多的,则按行按列变得没有区别。

在含有n个顶点和e条边的无向图的邻接矩阵中,零元素的个数是( )。
A. e
B. 2e
C. n2-e
D. n2-2e

正确答案是 D。
解析
无向图的邻接矩阵中,邻接大小为n2,非零元素个数为2e,所以零元素的个数是n2-2e。

将三对角矩阵A[1…100][1…100]按行优先存入一维数组B[1…298]中,A中元素A[66][65]在数组B中的位置k为( )。
A. 198
B. 195
C. 197
D. 196

正确答案是 B。
解析
对于三对角矩阵,将A[1…n][1…n]压缩至B[1…3n-2]时,aij与bk的对应关系为k=2i+j-2。则A中的元素A[66][65]在数组B中的位置k=2*66+65-2=195

设图的邻接矩阵A如下所示,各顶点的出度分别为( )。
A. 1,2,2,2
B. 2,2,2,2
C. 2,2,1,1
D. 2,3,2,4

正确答案是 C。
解析
邻接矩阵A为非对称矩阵,说明图是有向图,各顶点的出度为矩阵行中1的个数,即2,2,1,1。

对有n个结点、e条边且采用数组表示法(即邻接矩阵存储)的无向图进行深度优先遍历,时间复杂度为( )。
在这里插入图片描述

A. O(n^2)
B. O(e^2)
C. O(n+e)
D. O(n*e)

正确答案是 A。
解析
图的邻接矩阵是指用一个矩阵来表示图中顶点之间的关系。对有n个结点的图,其邻接矩阵是一个n阶方阵。对于无向图来说,其邻接矩阵如下图所示
当采用深度优先进行遍历的时候,查找所有邻接点所需要的时间是O(n^2)。

下列哪种图的邻接矩阵是对称矩阵?( )。
A. 有向图
B. 无向图
C. AOV网
D. AOE网

正确答案是 B。
解析
无向图的邻接矩阵存储中,每条边存储两次,且A[i][j]=A[j][i]。

某有向图G的邻接表如下图所示,可看出该图中存在弧<v2,v3>,而不存在从顶点Vi出发的弧。关于图G的叙述中,错误的是( )。
在这里插入图片描述
A. G中存在回路
B. G中每个顶点的入度都为1
C. G的邻接矩阵是对称的
D. G中不存在弧<v3,V1>

正确答案是 C。
解析
根据题干给出的邻接表,绘制有向图如下。根据图示,得到C错误,其转换后的邻接矩阵是非对称矩阵。

下列关于图的存储结构的叙述中,正确的是( )。
A. 一个图的邻接矩阵表示唯一,邻接表表示唯一
B. 一个图的邻接矩阵表示不唯一,邻接表表示唯一
C. 一个图的邻接矩阵表示唯一,邻接表表示不唯一
D. 一个图的邻接矩阵表示不唯一,邻接表表示不唯—

正确答案是 C。
解析
邻接矩阵表示唯一是因为图中边的信息在矩阵中有确定的位置,邻接表不唯一是因为邻接表的建立取决于建立边的顺序和表中的插入算法。

已知二维数组A按行优先方式存储,每个元素占用2个存储单元,第一个元素A[0][0]的地址为100,元素A[3][3]的存储地址是220,则元素A[5][5]的地址是( )。
A. 300
B. 310
C. 306
D. 296

正确答案是 A。
解析
本题考查数据结构矩阵与数组。
已知题目说明二维数组A按行进行存储,且每个元素占用2个存储单元,第一个元素A[0][0]的地址为100,A[3][3]的地址为220。
我们先设每行有X个元素,从而推到出A[0][0]距离A[3][3]应该为X-1+2X+4=3X+3
间隔地址数为220-100=120,已知每个地址为2个存储单元,则有:
2(3X+3) =120,得出X=19,可知该二维矩阵的列为19。
故A[5][5]的地址应该为220+2 (15+19+6)=300

通过元素在存储空间中的相对位置来表示数据元素之间的逻辑关系,是( )的特点。
A. 顺序存储
B. 链表存储
C. 索引存储
D. 哈希存储

正确答案是 A。
解析
本题考查数据结构与算法基础。
顺序存储时,通过元素在存储空间中的相对位置来表示数据元素之间的逻辑关系,元素的逻辑相对位置与物理相对位置是一致的。
链表存储:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
索引存储:分别存放数据元素和元素间关系的存储方式。
哈希存储:哈希存储的基本思想是以关键字Key为自变量,通过一定的函数关系(散列函数或哈希函数),计算出对应的函数值(哈希地址),以这个值作为数据元素的地址,并将数据元素存入到相应地址的存储单元中。
综上所述,故本题选择A选项。

对于一个n阶的对称矩阵A,将其下三角区域(含主对角线)的元素按行存储在一维数组S中,设元素A[i]j]存放在S[K]中,且S[1]=A[0][0],则k与i,j(i≤j)的对应关系是( )。
A. k=i(i+1)/2+j-1
B. k=j(j+1)/2+i+1
C. k=i(i+1) /2+j+1
D. k=j(j+1)/2+i-1

正确答案是 B。
解析
本题考查数据结构矩阵相关知识。
本题有隐含条件需要注意,虽然前半段描述的是我们存储的下三角部分元素,但是最后提问的是i≤j情况下,元素下标与k的对应关系,此时已经指向的是其对称元素位置了。
可用代入法解决问题。
将S[1]=A[0][0]实例,对应上三角元素A[0][0],代入选项验证可得,只有B和C选项符合要求;
根据按行存储的顺序来看,下一个元素应该是A[1][0],对应上三角元素A[0][1],对应的一维数组位置为S[2],代入BC选项进行验证,选项结果都为2,无法区分;
根据按行存储的顺序来看,接下来元素应该是A[1][1],对应上三角元素A[1][1],对应的一维数组位置为S[3],代入BC选项进行验证,选项结果都为3,无法区分;
根据按行存储的顺序来看,接下来元素应该是A[2][0],对应上三角元素A[0][2],对应的一维数组位置为S[4],代入BC选项进行验证,选项C结果为3不符合要求,选项B结果为4是正确的选项;
所以本题选择B选项。

对于如下所示的有向图,其邻接矩阵是一个(1)的矩阵。采用邻接链表存储时,顶点1的表结点个数为2,顶点5的表结点个数为0,顶点2和3的表结点个数分别为(2)。
题目(1)
A. 5×5
B. 5×7
C. 7×5
D. 7×7
题目(2)
A. 2.1
B. 2.2
C. 3.4
D. 4.3

正确答案是 A B。
解析
本题考查数据结构邻接矩阵相关知识。
根据邻接矩阵的定义,行列数都为结点个数,结点数为5,因此邻接矩阵行列数均为5,即5×5的矩阵。根据邻接表的定义,一个顶点的表结点个数为其邻接顶点的个数,顶点2有2个邻接顶点,顶点3有2个邻接顶点。

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yoyo勰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值