数据结构(递归、数组、矩阵)练习题与答案

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、有一个三维数组A[-2..2][-4..5][2..6],其中元素个数是

()。

A.144

B.250

C.396

D.60

正确答案:B

解析: B、A的第1维长度为5,第2维长度为10,第3维长度为5,元素个数=5×10×5=250。

2、设C/C++二维数组a[m][n],每个数组元素占用k个存储单元,

第一个数组元素的存储地址是LOC(a[0][0]),求按行优先顺序存放

的数组元素a[i][j](0≤i≤m-1,0≤j≤n-1)的存储地址为()。

A.LOC(a[0][0])+[(j-1)×m+i-1]×k

B.LOC(a[0][0])+[i×n+j]×k

C.LOC(a[0][0])+[(i-1)×n+j-1]×k

D.LOC(a[0][0])+[j×m+i]×k

正确答案:B

解析: B、a[i][j]前面有0~i-1行,计i×n个元素,第i行前

面有j个元素,则a[i][j]前面有i×m+ j个元素,所以a[i][j]的

存储地址=LOC(a[0][0])+[i×n+j]×k。

3、设二维数组a[1..5][1..8],若按行优先的顺序存放数组的元素,则a[4][6]元素的前面有()个元素。

A.6

B.40

C.28

D.29

正确答案:D

解析: D、m=5,n=8,a[4][6]元素的前面的元素个数=(4-1) ×8+(6-1)=29。

4、设C/C++二维数组a[6][10],每个数组元素占用4个存储单元,若按行优先顺序存放所有数组元素,a[3][5]的存储地址为1000,则a[0][0]的存储地址是()。

A.864

B.868

C.860

D.872

正确答案:C

解析: C、C/C++二维数组下标从0开始。a[3][5]前面的元素个数=(3-0)×10+(5-0)=35。所以1000=LOC(a[0][0])+35×4,

LOC(a[0][0])=860。

5、一个n阶对称矩阵A采用压缩存储方式,将其下三角部分(含主对角线元素)按行优先存储到一维数组B中,则B中元素个数是()。

A.n(n+1)/2

B.n*n

C.n(n+1)/2+1

D.n

正确答案:A

6、一个n阶对称矩阵A[1..n,1..n]采用压缩存储方式,将其下三

角部分按行优先存储到一维数组B[1..m]中,则A[i][j](i

素在B中的位置k是()。

A.i(i-1)/2+j-1

B.j(j-1)/2+i-1

C.j(j-1)/2+i

D. i(i-1)/2+j

正确答案:C

解析: C、对于下三角部分或者主对角线元素a[i][j],它存储在

b[k]中,k=i(i-1)/2+j。对于上三角部分元素A[i][j](i

应的k=j(j-1)/2+i。

7、一个n阶上三角矩阵A按行优先顺序压缩存放在一维数组B,则

B中元素个数是()。

A.n

B.n*n

C.n(n+1)/2

D.n(n+1)/2+1

正确答案:D

8、一个n(n>3)阶三对角矩阵A按行优先顺序压缩存放在一维数组B,则B中元素个数是()。

A.n*n

B.3n-2

C.3n

D.2n

正确答案:B

9、稀疏矩阵常用的压缩存储方法有()。

A.哈希表和十字链表

B.二维数组

C.三元组和哈希表

D.三元组和十字链表

正确答案:D

10、稀疏矩阵采用压缩存储后的缺点之一是()。

A.无法由行、列值查找某个矩阵元素

B.使矩阵元素之间的逻辑关系更加复杂

C.无法判断矩阵的行列数

D.丧失随机存取特性

正确答案:D

11、一个正确的递归算法通常包含()。

A.递归出口

B.递归体

C.递归出口和递归体

D.以上都不包含

正确答案:C

解析:正确的递归算法应包含递归出口和递归体两部分,缺一不可。

12、递归函数f(x,y)定义如下:

f(x,y)=f(x-1,y)+f(x,y-1) 当x>0且y>0

f(x,y)=x+y 否则

则f(2,1)的值是()。

A.1

B.2

C.3

D.4

正确答案:D

解析: f(2,1)=f(1,1)+f(2,0)=f(0,1)+f(1,0)+2=1+1+2=4。

13、某递归算法的执行时间的递推关系如下:

T(n)=1 当n=1时

T(n)=T(n/2)+1 当n>1时

则该算法的时间复杂度为()。

A. O(1)

B. O(log2n)

C. O(n)

D. O(nlog2n)

正确答案:B

解析:不妨设n=2^k,k=log2n。

T(n)=T(n/2)+1= T(n/2^2)+2=…= T(n/2^k)+k=T(1)+log2n=O(log2n)。

14、某递归算法的执行时间的递推关系如下:

T(n)=1 当n=1时

T(n)=2T(n/2)+1 当n>1时

则该算法的时间复杂度为()。

A. O(1)

B. O(log2n)

C. O(n)

D. O(nlog2n)

正确答案:C

解析:不妨设n=2^k,k=log2n。

相关文档
最新文档