数组及其他线性结构.docx
《数组及其他线性结构.docx》由会员分享,可在线阅读,更多相关《数组及其他线性结构.docx(12页珍藏版)》请在冰豆网上搜索。
![数组及其他线性结构.docx](https://file1.bdocx.com/fileroot1/2023-6/11/f9dc34b1-8f78-4567-9989-5c526f55bbc5/f9dc34b1-8f78-4567-9989-5c526f55bbc51.gif)
数组及其他线性结构
数组及其他线性结构
一、单项选择题(共24题)
1.数组A中,每个元素A的长度为3字节,行下标i从1到8,列下标j从1到10,从首地址SA开始连续存放在存储器内,存放该数组至少需要的单元数是()。
A.80B.100C.240D.270
答案:
C
2.稀疏矩阵一般的压缩存储方式有两种,即()。
A.三元组和十字链表B.三元组和散列
C.二维数组和三维数组D.散列和十字链表
答案:
A
3.串是一种特殊的线性表,其特殊性体现在串的()。
A.数据元素可以顺序存储B.数据元素是一个字符
C.数据元素可以连接存储D.数据元素可以是多个字符
答案:
B
4.一个数组元素a[i]与()的表示等价。
A.&a+iB.*(a+i)C.*a+iD.a+i
答案:
B
5.二维数组A[12][10]采用行优先存储,每个数据元素占用4个存储单元,该数组的首地址(即A[0][0]的地址)为1200,则A[6][5]的地址为()
A.1400B.1404C.1372D.1460
答案:
D
6.有一个M
N的矩阵A,若采用行优先进行顺序存储,每个元素占用8个字节,则
元素的相对字节地址(相对首元素地址而言)为()
A.
B.
C.
D.
答案:
B
7.二维数组M的元素是4个字符(每个字符占一个存储单元)组成的串,行下标i的范围从0到4,行下标j的范围从0到5,M按行存储时元素M[3][5]的起始地址与M按列存储时元素()的起始地址相同。
A.M[2][4]B.M[3][4]C.M[3][5]D.M[4][4]
答案:
B
8.有一个N
N的下三角矩阵A,若采用行优先进行顺序存储,每个元素占用k个字节,则
元素的相对字节地址(相对首元素地址而言)为()
A.
B.
C.
D.
答案:
C
9.下列叙述中正确的是()。
A.数据的逻辑结构与存储结构必定是一一对应的
B.由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构
C.程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构
D.以上3种说法都不对
答案:
C
10.对数组常进行的两种基本操作是()。
A.建立与删除B.索引与修改C.查找和修改D.查找与索引
答案:
C
11.以下()是C语言中"abcd321ABCD"的子串。
A.abcdB.321ABC."abcABC"D."21AB"
答案:
D
12.若串S="software",其子串的数目是()。
A.8B.37C.36D.9
答案:
C
13.将一个A[1:
100,1:
100]的三对角矩阵,按行优先存入一维数组B[1:
298]中,A中元素A66,65(即该元素的下标)在B数组中位置k为()。
A.198B.195C.197D.196
答案:
B
14.二维数组Amn按行序为主顺序存放在内存中,每个数组元素占1个存储单元,则元素aij的地址计算公式是()。
A.LOC(aij)=LOC(a11)+[(i-1)*m+(j-1)]
B.LOC(aij)=LOC(a11)+[(j-1)*m+(i-1)]
C.LOC(aij)=LOC(a11)+[(i-1)*n+(j-1)]
D.LOC(aij)=LOC(a11)+[(j-1)*n+(i-1)]
答案:
C
15.串是一种特殊的线性表,其特殊性体现在()。
A.可以顺序存储B.数据元素是一个字符
C.可以链接存储D.数据元素可以是多个字符
答案:
B
16.设有两个串p和q,求q在p中首次出现的位置的运算称作()。
A.连接B.模式匹配C.求子串D.求串长
答案:
B
17.设串s1="ABCDEFG",s2="PQRST",函数con(x,y)返回x和y串的连接串,subs(s,I,j)返回串s的从序号i的字符开始的j个字符组成的子串,len(s)返回串s的长度,则con(sub(s1,2,len(s2)),sub(s1,len(s2),2))的结果是()。
A.BCDEFB.BCDEFGC.BCPQRSTD.BCDEFEF
答案:
D
18.常对数组进行的两种基本操作是()。
A.建立和删除B.索引和修改C.查找和修改D.索引和查找
答案:
C
19.稀疏矩阵一般的压缩存储方法有两种,即()。
A.二维数组和三维数组B.三元组和散列
C.三元组和十字链表D.散列和十字链表
答案:
C
20.设串s1="ABCDEFG",s2="PQRST",函数con(x,y)返回x和y串的连接串,subs(s,i,j)返回串s的从序号i开始的j个字符组成的子串,len(s)返回串s的长度,则con(subs(s1,2,len(s2)),subs(s1,len(s2),2))的结果串是:
()
A.BCDEFB.BCDEFGC.BCPQRSTD.BCDEFEF
答案:
D
21.假设有60行70列的二维数组a[1…60,1…70]以列序为主序顺序存储,其基地址为10000,每个元素占2个存储单元,那么第32行第58列的元素a[32,58]的存储地址为()。
(无第0行第0列元素)
A.16902B.16904C.14454D.答案A,B,C均不对
答案:
A
22.设矩阵A是一个对称矩阵,为了节省存储,将其下三角部分(如右图所示)按行序存放在一维数组B[1,n(n-1)/2]中,对下三角部分中任一元素ai,j(i≤j),在一维数组B中下标k的值是:
()
A.i(i-1)/2+j-1B.i(i-1)/2+jC.i(i+1)/2+j-1D.i(i+1)/2+j
答案:
B
23.从供选择的答案中,选出应填入下面叙述?
内的最确切的解答,把相应编号写在答卷的对应栏内。
有一个二维数组A,行下标的范围是0到8,列下标的范围是1到5,每个数组元素用相邻的4个字节存储。
存储器按字节编址。
假设存储数组元素A[0,1]的第一个字节的地址是0。
存储数组A的最后一个元素的第一个字节的地址是(
(1))。
若按行存储,则A[3,5]和A[5,3]的第一个字节的地址分别是(
(2))和((3))。
若按列存储,则A[7,1]和A[2,4]的第一个字节的地址分别是((4))和((5))。
A.28B.44C.76D.92
E.108F.116G.132H.176
I.184J.188
答案:
HCEAF
24.从供选择的答案中,选出应填入下面叙述?
内的最确切的解答,把相应编号写在答卷的对应栏内。
有一个二维数组A,行下标的范围是1到6,列下标的范围是0到7,每个数组元素用相邻的6个字节存储,存储器按字节编址。
那么,这个数组的体积是(
(1))个字节。
假设存储数组元素A[1,0]的第一个字节的地址是0,则存储数组A的最后一个元素的第一个字节的地址是(
(2))。
若按行存储,则A[2,4]的第一个字节的地址是((3))。
若按列存储,则A[5,7]的第一个字节的地址是((4))。
A.12B.66C.72D.96
E.114F.120G.156H.234
I.276J.282K.283L.288
答案:
LJBI
二、填空题(共10题)
1.空串是(),其长度等于()。
空格串是(),其长度()。
答案:
零个字符的串0仅由空格组成的串大于0
2.在二维数组a[10,20]中,每个元素占用8个存储单元,假定该数组的首地址为2000,则数组元素a[6,15]的字节地址为()。
答案:
3080
3.有一个10
10的下三角矩阵A,若将其进行顺序存储于一维数组a[N]中,则
存储于a中的下标位置为()。
答案:
4.一个稀疏矩阵有10个非零元素,矩阵元素为整型数据(每个元素占4字节)。
现用三元组对其进行压缩存储,则该稀疏矩阵中的元素占用()个存储单元。
答案:
120
5.二维数组S的元素是6个字符(每个字符占一个存储单元)组成的串,行下标i的范围从0~4,列下标j的范围从0~5,S按行存储时元素S[3][5]的起始地址是(),S按列存储时元素S[2][4]的起始地址是()。
设S[0][0]的起始地址为0。
答案:
138132
6.设n行n列的下三角矩阵A已压缩到一维数组S[1..n×(n+1)/2〕中,若按行序为主存储,则A[i][j](1≥j)对应的S的存储位置是()。
答案:
i×(i+1)/2+j
7.有一个10阶对称矩阵A,采用压缩存储方式(以行序为主存储,且A[0][0]=1),则A[8][5]的地址是().
答案:
42
8.两个串相等的充分必要条件是()。
答案:
两个串的长度相等且对应位置的字符相同
9.数组Q[n]用来表示一个循环队列,f为队首指针,r为队尾指针。
假设队列中元素的个数小于n,则计算队列中元素个数的公式为()。
答案:
(n+r-f)%n
10.数据的存储结构可用4种基本的存储方法表示,它们分别是()、()、()和()。
答案:
顺序链式索引散列
三、简答题(共7题)
1.假定用一维数组a[7]顺序存储一个循环队列,队首和队尾指针分别用front和rear表示,当前队列中已有5个元素;23,45,67,80,34,其中23为队首元素,front的值为3,请画出对应的存储状态,当连续进行4次出队运算后,再让15,36,48元素依次进队,请再次画出对应的存储状态。
答案:
两次对应的存储状态分别为:
2.用三元组线性表表示如下稀疏矩阵:
答案:
三元组线性表中的每个结点对应于稀疏矩阵的一个非零元素,它包含3个数据项,分别表示该元素的行下标、列下标和元素值。
另外,三元组线性表的表头存储矩阵中的行数、列数和非零元素个数。
6
6
4
0
3
2
1
0
1
2
2
4
4
4
3
3.设A[n][n]为一个上三角矩阵,将A中所有非零元素按列序顺次存入一维数组B中,则A与B元素的对应关系是什么?
【解答】上三角矩阵如下所示
其数据元素满足Aij=0,对所有的i>j
上三角矩阵正好是一个下三角矩阵的转秩,我们知道,一个下三角矩阵按行压缩存储时,矩阵元素与一维数组的对应关系为
A[i][j]B[i*(i+1)/2+j],对所有的i>j;
因此,下三角矩阵按列序存储在一维数组中的元素对应关系为
A[i][j]B[j*(j+1)/2+i],对所有的i4.用三元组表表示下面稀疏矩阵:
答案:
5.用三元组表表示下面稀疏矩阵:
答案:
6.下面三元组表表示一个稀疏矩阵,试写出其对应的稀疏矩阵。
答案:
7.下面三元组表表示一个稀疏矩阵,试写出其对应的稀疏矩阵。
答案:
四、应用题(共2题)
1.设有数组a[4][4],按行存储数组中元素,编写函数求两条对角线元素和的乘积。
答案:
数组a[4][4]中一条对角线是a[i][i],另一条对角线则是a[4-i][i],因此用循环将两条对角线的元素分别相加,再计算乘积。
算法源代码如下:
intfun_Mult(inta[4][4])
{
inti,s=1,sum1=0,sum2=0;
for(i=0;i<4;i++)
{
sum1=sum1+a[i][i];
sum2=sum2*a[4-i][i];
}
s=sum1*sum2;
return(s);
}
2.若x和y是两个采用顺序结构存储的串,编写函数比较两个串是否相等。
答案:
两个串相等表示对应的字符都相等,因此函数依次扫描两个串,并逐一比较相应位置的字符,若相同继续比较直到全部比较完毕,如果都相同则表示两串相同,否则表示两串不相等。
算法源代码如下:
intsameStr(charx[],chary[])
{
inti=0,tag=1;
if(strlen(x)!
=strlen(y))
return(0);
else
{
while(i{
if(x[i]!
=y[i])
tag=0;
i++;
}
return(tag);
}
}