数据结构课后习题(第4-5章)

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

【课后习题】第4章 串 第5章 数组和广义表
网络工程2010级( )班 学号: 姓名:
一、填空题(每空1分,共30分)
1. 串有三种机内表示方法: 、 和 ,其中前两种属于顺序存储结构,第三种属于 。

2. 若n 为主串长度,m 为子串长度,则串的BF (朴素)匹配算法最坏的情况下需要比较字符的总次数
为 ,T(n)= 。

3. 是任意串的子串;任意串S 都是S 本身的子串,除S 本身外,S 的其他子串称为S 的 。

4. 设数组a[1…50, 1…60]的基地址为1000,每个元素占2个存储单元,若以行序为主序顺序存储,则
元素a[32,58]的存储地址为 。

5. 对于数组,比较适于采用 结构够进行存储。

6. 广义表的深度是指_______。

7. 将一个100100 A 的三对角矩阵,按行优先存入一维数组B[297]中,A 中元素66,66A 在B 数组中的位置
k 为 。

注意:a i,j 的k 为 2(i-1)+j-1,(i=1时j=1,2;1<i<=n 时,j=i-1,i,i+1) 。

8. 称为空串; 称为空白串。

9. 求串T 在主串S 中首次出现的位置的操作是 ,其中 称为目标串, 称为模
式。

10. 对称矩阵的下三角元素a[i,j],存放在一维数组V 的元素V[k]中(下标都是从0开始),
k 与i ,j 的关系是:k= 。

11. 在n 维数组中每个元素都受到 个条件的约束。

12. 同一数组中的各元素的长度 。

13. 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元
素的 、 和 。

14. 稀疏矩阵中有n 个非零元素,则其三元组有 行。

15.求下列广义表操作的结果:
(1)GetHead【((a,b),(c,d))】=== ;
(2)GetHead【GetTail【((a,b),(c,d))】】=== ;
(3)GetHead【GetTail【GetHead【((a,b),(c,d))】】】=== ;
(4)GetTail【GetHead【GetTail【((a,b),(c,d))】】】=== ;
16.广义表E=(a,(b,E)),则E的长度= ,深度= ;
二、判断题(如果正确,在下表对应位置打“√”,否则打“⨯”。

每题1分,共10分)
1.串是字符的有限序列。

2.串与线性表的运算有所不同,是以“串的整体”作为操作对象。

3.空串是由空格构成的串。

4.如果一个串中的所有字符均在另一个串中出现,则说明前者是后者的子串。

5.串既可以采用顺序存储,也可以采链式存储。

6.数组的顺序存储结构,有行(低地址)优先和列(高地址)优先两种不同的顺序。

7.具备压缩条件的矩阵有:对称矩阵,对角矩阵,稀疏矩阵等。

8.任何一个非空的广义表,表头可能是原子,也可能是列表;但表尾一定是列表;
9.三元组顺序表又称有序的双下标法,它可以随机存取某一行中的非零元素。

10.若采用三元组压缩技术存储稀疏矩阵,只要把每个元素的行下标和列下标互换,就完成了对该矩阵的转置运算
三、单项选择(请将正确答案的代号填写在下表对应题号下面。

每题1.5分,共36分)
1.串是一种特殊的线性表,其特殊性体现在:()
A.可以顺序存储B.数据元素是一个字符
C.可以链式存储D.数据元素可以是多个字符
2.设串s1=’ABCDEFG’,s2=’PQRST’,函数concat(x,y)返回x和y串的连接串,subs(s, i, j)
返回串s的从序号i开始的j个字符组成的子串,len(s)返回串s的长度,
则concat (subs(s1, 2, len(s2)), subs(s1, len(s2), 2))的结果串是:( )A.BCDEF B.BCDEFG C.BCPQRST D.BCDEFEF 3. 设有两个串s 和t ,求t 在s 中首次出现的位置的运算称作( )
A)连接 B)模式匹配 C) 求子串 D)求串长 4. 如下是一个稀疏矩阵的三元组法存储表示和基于此表示所得出的相关叙述 行下标 列下标 值
I. III.该稀疏矩阵有6个非0元素 这些叙述中( )是正确的。

A)仅I B)I 和II C)仅III D)全部 5. 广义表((a),a)的表头和表尾分别是( )。

A) a ,((a)) B) (a) ,(a) C) b ,(a) D) ((a)) , a
6. 一个广义表为(a,(a,b),d,e,((i,j),k)),则该广义表的长度和深度分别是( )。

A) 5,3 B)5,4 C)4,3 D)4,4
7. 设串sl=“Data Structures with Java ”,s2=“it ”,则子串定位函数index(s1,s2,3)的值为( )。

A .15
B .16
C .17
D .18 8. 二维数组A[8][9]按行优先顺序存储,若数组元素A[2][3]的存储地址为1087,A[4][7]的存储地
址为1153,则数组元素A[6][7]的存储地址为( )。

A .1207 B .1209 C .1211 D .1213 9. ( )不是"Yu**Jia**Shan"的子串。

A. "Yu"
B. "Jia"
C. "**Shan"
D. "YuJiaShan"
10. 设矩阵A 是一个对称矩阵,为了节省存储,将其下三角部分(如下图所示)按行序存放在一维数
组B[ 1, n(n-1)/2 ]中,对下三角部分中任一元素ai,j(i ≤j), 在一维数组B 中下标k 的值是:
⎥⎥
⎥⎥⎥⎦⎤
⎢⎢⎢⎢⎢⎣⎡=n n n n a a a a a a A ,2
,1
,2,21,21
,1
A.i(i+1)/2+j-1
B.i(i-1)/2+j
C.i(i-1)/2+j-1
D.i(i+1)/2+j
11. 若块链存储结构中每个结点存放4个字符,每个指针占2个字节,则它的存储密度为()
A. 3/2
B. 2/3
C.1/2
D.1/3 12. 数组的基本操作是( )。

A.插入数组元素
B.删除数组元素
C.只可以读
D.读和写 13. 同一个数组中的元素( )。

A.长度可以不同
B.类型不限
C.类型相同
D.长度不限
14. 数组结构一旦确定,其元素的个数是( )。

A.不变的
B.可变的
C.任意的
D.0
15. 一个数组一旦说明,其占用空间的大小( )。

A.已固定
B.可以改变
C.不能固定
D.动态变化 16. 数组与一般线性表的区别主要在( )。

A.存储方面
B.元素类型一致
C.逻辑结构方面
D.不能进行插入、删除运算
17. 一维数组的元素起始地址loc[6]=1000,元素长度为4,则loc[8]为( )。

A.1032
B.1004
C.1008
D.8
18. 已知一个稀疏矩阵的三元组表如下:
{(1,2,3,),(1,6,1),(3,1,5), (3,2,-1),(4,5,4),(5,1,-3)},则其转置矩阵的三元组表中第3个三元组为( )。

A.(2,1,3)
B.(3,1,5)
C.(3,2,-1)
D.(2,3,-1.) 19. 下图表示串的( )存储结构。

A 、定长顺序;
B 、不定长顺序;
C 、堆分配;
D 、块链。

20. 如下结构为矩阵按行存储的三元组顺序表T ,则对该矩阵的第2行第1列处元素加4的语句为
( )。

0 1 2 3 4 5 6 7 8 9 10 11 …… n-1
A 、4].1
,2[.].1,2[.+=e data T e data T ; B 、4].2,1[.].2,1[.+=e data T e data T ; C 、4].2[.].2[.+=e data T e data T ; D 、4].3[.].3[.+=e data T e data T 。

21. 假设有按行顺序存储的二维数组m n A ⨯,每个元素用相邻的c 个字节存储,存储器按字节编址。


知数组第一个元素00a 的起始存储地址为1000,则68a 的起始存储地址是( )。

A 、)86(1000+⨯+m ; B 、c m ⨯+⨯+)86(1000; C 、)68(1000+⨯+n ; D 、c n ⨯+⨯+)68(1000。

22. 如下结构为矩阵按行存储的行逻辑链接的三元组顺序表T ,则该矩阵第5行具有非零元素数为( )。

0 1 2 3 4 5 6 7 8 9 10 11 …… n-1
图1
A 、]5[.rpos T ;
B 、Tu T .;
C 、e data T ].5[.;
D 、]5[.]6[.rpos T rpos T 。

23. 如下为一广义表的扩展线性链表存储表示如图3所示,其表示的广义表为( )。

A 、((),a ,((b ,c ),(),d ),(((e ))));
B 、((()),a ,((b ,c ),(),d ),(((e ))));
C 、((()),a ,(b ,c ,(),d ),(((e ))));
D 、((()),a ,((b ,c ),(),d ),((e )))。

24. 广义表A=(a ,(b),(),(c,d,e))的长度为( )
A.3
B.4
C.5
D.6 四、应用题(24分)
1. (6分)某广义表的表头和表尾均为(a,(b,c)),画出该广义表的图形表示。

2.(6分)
1
2
3
4
5
请画出这两个稀疏矩阵之和的三元组表。

3、(12分)函数strcmp()是比较两个字符串s 和t 的大小。

若s < t 函数返回负数;若s = t 函数返回0;若s > t,函数返回正数。

int strcmp(char *s,char *t)
{ while ( *s && *t && __ ______){
; ;
}
return __ ____;
}
【课后习题】第4章~第5章 参考答案
一、填空题(每空1分,共30分)
1. 定长顺序存储、堆分配存储和块链存储,其中前两种属于顺序存储结构,
2. 若n 为主串长度,m 为子串长度,则串的BF (朴素)匹配算法最坏的情况下需要比较字符的总次
3. S 都是S 本身的子串,除S 本身外,S 的其他子串称为S
4. 设数组a[1…50, 1…60]的基地址为1000,每个元素占2个存储单元,若以行序为主序顺序存储,
则元素a[32,58]
5. 结构够进行存储。

6. 广义表的深度是指。

7. 将一个100100⨯A 的三对角矩阵,按行优先存入一维数组B[297]中,A 中元素66,66A 在B 数组中的位
置k
注意:a i,j 的k 为 2(i-1)+j-1,(i=1时j=1,2;1<i<=n 时,j=i-1,i,i+1) 。

8.
9. 求串T 在主串S
10. 对称矩阵的下三角元素a[i,j],存放在一维数组V 的元素V[k]中(下标都是从0开始),
k 与i ,j 的关系是:
11. 在n
12.
13. 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元
14. 稀疏矩阵中有t 15. 求下列广义表操作的结果:
(1) GetHead 【((a,b),(c,d))】
(2) GetHead 【GetTail 【((a,b),(c,d))】】
(3) GetHead 【GetTail 【GetHead 【((a,b),(c,d))】】】
(4) GetTail 【GetHead 【GetTail 【((a,b),(c,d))】】】
16. 广义表E=(a,(b,E)),则E 的长度
二、判断题(如果正确,在下表对应位置打“√”,否则打“⨯”。

每题1分,共10分)
三、单项选择(请将正确答案的代号填写在下表对应题号下面。

每题1.5分,共36分)
题号 1 2 3 4 5 6 7 8 9 10 11 12 答案 B D B C B A D A D B B D 题号13 14 15 16 17 18 19 20 21 22 23 24 答案 C A A D C A D D B D B B 四、应用题(24分)
1.(6分)
2.(6分)两个稀疏矩阵之和的三元组表。

1 1 12
1 3 50
2 2 -4
2 5 69
4 1 33
4 2 43
5 3 10
3、(12分)函数strcmp()是比较两个字符串s 和t 的大小。

若s < t 函数返回负数;若s = t 函数返回0;若s > t,函数返回正数。

int strcmp(char *s,char *t)
{ while ( *s && *t && __*s==*t__){
s++;t++ ;}
return __ *s- *t____;
}
【课后习题】第4章 串 第5章 数组和广义表(参考答案)
网络工程2010级( )班 学号: 姓名:
一、填空题(每空1分,共30分)
1. 定长顺序存储、堆分配存储和块链存储,其中前两种属于顺序存储结构,
2. 若n 为主串长度,m 为子串长度,则串的BF (朴素)匹配算法最坏的情况下需要比较字符的总次
3. S 都是S 本身的子串,除S 本身外,S 的其他子串称为S
4. 设数组a[1…50, 1…60]的基地址为1000,每个元素占2个存储单元,若以行序为主序顺序存储,
则元素a[32,58]
5. 结构够进行存储。

6. 广义表的深度是指。

7. 将一个100100 A 的三对角矩阵,按行优先存入一维数组B[297]中,A 中元素66,66A 在B 数组中的位
置k
注意:a i,j 的k 为 2(i-1)+j-1,(i=1时j=1,2;1<i<=n 时,j=i-1,i,i+1) 。

8.
9. 求串T 在主串S
10. 对称矩阵的下三角元素a[i,j],存放在一维数组V 的元素V[k]中(下标都是从0开始),
k 与i ,j 的关系是:
11. 在n
12.
13. 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元
14. 稀疏矩阵中有t
15.求下列广义表操作的结果:
(1)GetHead【((a,b),(c,d))】
(2)GetHead【GetTail【((a,b),(c,d))】】
(3)GetHead【GetTail【GetHead【((a,b),(c,d))】】】
(4)GetTail【GetHead【GetTail【((a,b),(c,d))】】】
16.广义表E=(a,(b,E)),则E的长度
二、判断题(如果正确,在下表对应位置打“√”,否则打“⨯”。

每题1分,共10分)
1.串是字符的有限序列。

2.串与线性表的运算有所不同,是以“串的整体”作为操作对象。

3.空串是由空格构成的串。

4.如果一个串中的所有字符均在另一个串中出现,则说明前者是后者的子串。

5.串既可以采用顺序存储,也可以采链式存储。

6.数组的顺序存储结构,有行(低地址)优先和列(高地址)优先两种不同的顺序。

7.具备压缩条件的矩阵有:对称矩阵,对角矩阵,稀疏矩阵等。

8.任何一个非空的广义表,表头可能是原子,也可能是列表;但表尾一定是列表;
9.三元组顺序表又称有序的双下标法,它可以随机存取某一行中的非零元素。

10.若采用三元组压缩技术存储稀疏矩阵,只要把每个元素的行下标和列下标互换,就完成了对该矩
阵的转置运算
三、单项选择(请将正确答案的代号填写在下表对应题号下面。

每题1.5分,共36分)
1.串是一种特殊的线性表,其特殊性体现在:()
A.可以顺序存储B.数据元素是一个字符
C.可以链式存储D.数据元素可以是多个字符
2.设串s1=’ABCDEFG’,s2=’PQRST’,函数concat(x,y)返回x和y串的连接串,subs(s, i, j)
返回串s 的从序号i 开始的j 个字符组成的子串,len(s)返回串s 的长度,
则concat (subs(s1, 2, len(s2)), subs(s1, len(s2), 2))的结果串是:( )A.BCDEF B.BCDEFG C.BCPQRST D.BCDEFEF 3. 设有两个串s 和t ,求t 在s 中首次出现的位置的运算称作( ) A)连接 B)模式匹配 C) 求子串 D)求串长
4.
如下是一个稀疏矩阵的三元组法存储表示和基于此表示所得出的相关叙述
行下标 列下标 值
I.该稀疏矩阵有5行 II.该稀疏矩阵有4列 III.该稀疏矩阵有6个非0元素 这些叙述中( )是正确的。

A)仅I B)I 和II C)仅III D)全部 5. 广义表((a),a)的表头和表尾分别是( )。

A) a ,((a)) B) (a) ,(a) C) b ,(a) D) ((a)) , a
6. 一个广义表为(a,(a,b),d,e,((i,j),k)),则该广义表的长度和深度分别是( )。

A) 5,3 B)5,4 C)4,3 D)4,4
7.
设串sl=“Data Structures with Java ”,s2=“it ”,则子串定位函数index(s1,s2,3)的值为( )。

A .15
B .16
C .17
D .18
8.
二维数组A[8][9]按行优先顺序存储,若数组元素A[2][3]的存储地址为1087,A[4][7]的存储地址为1153,则数组元素A[6][7]的存储地址为( )。

A .1207
B .1209
C .1211
D .1213
9.
( )不是"Yu**Jia**Shan"的子串。

A. "Yu"
B. "Jia"
C. "**Shan"
D. "YuJiaShan"
10. 设矩阵A 是一个对称矩阵,为了节省存储,将其下三角部分(如下图所示)按行序存放在一维数
组B[ 1, n(n-1)/2 ]中,对下三角部分中任一元素ai,j(i ≤j), 在一维数组B 中下标k 的值是:
⎥⎥
⎥⎥⎥⎦⎤
⎢⎢⎢⎢
⎢⎣
⎡=n n n n a a a a a a A ,2
,1,2,21
,21,1
A.i(i+1)/2+j-1
B.i(i-1)/2+j
C.i(i-1)/2+j-1
D.i(i+1)/2+j
11. 若块链存储结构中每个结点存放4个字符,每个指针占2个字节,则它的存储密度为()
A. 3/2
B. 2/3
C.1/2
D.1/3 12. 数组的基本操作是( )。

A.插入数组元素
B.删除数组元素
C.只可以读
D.读和写
13. 同一个数组中的元素( )。

A.长度可以不同
B.类型不限
C.类型相同
D.长度不限 14. 数组结构一旦确定,其元素的个数是( )。

A.不变的
B.可变的
C.任意的
D.0
15. 一个数组一旦说明,其占用空间的大小( )。

A.已固定
B.可以改变
C.不能固定
D.动态变化 16. 数组与一般线性表的区别主要在( )。

A.存储方面
B.元素类型一致
C.逻辑结构方面
D.不能进行插入、删除运算
17. 一维数组的元素起始地址loc[6]=1000,元素长度为4,则loc[8]为( )。

A.1032
B.1004
C.1008
D.8
18. 已知一个稀疏矩阵的三元组表如下:
{(1,2,3,),(1,6,1),(3,1,5), (3,2,-1),(4,5,4),(5,1,-3)},则其转置矩阵的三元组表中第3个三元组为( )。

A.(2,1,3)
B.(3,1,5)
C.(3,2,-1)
D.(2,3,-1.) 19. 下图表示串的( )存储结构。

A 、定长顺序;
B 、不定长顺序;
C 、堆分配;
D 、块链。

20. 如下结构为矩阵按行存储的三元组顺序表T ,则对该矩阵的第2行第1列处元素加4的语句为
( )。

0 1 2 3 4 5 6 7 8 9 10 11 …… n-1
A 、4].1,2[.].1,2[.+=e data T e data T ;
B 、4].2,1[.].2,1[.+=e data T e data T ;
C 、4].2[.].2[.+=e data T e data T ;
D 、4].3[.].3[.+=e data T e data T 。

21. 假设有按行顺序存储的二维数组m n A ⨯,每个元素用相邻的c 个字节存储,存储器按字节编址。

已知数组第一个元素00a 的起始存储地址为1000,则68a 的起始存储地址是( )。

A 、)86(1000+⨯+m ; B 、c m ⨯+⨯+)86(1000; C 、)68(1000+⨯+n ; D 、c n ⨯+⨯+)68(1000。

22. 如下结构为矩阵按行存储的行逻辑链接的三元组顺序表T ,则该矩阵第5行具有非零元素数为
图1
( )。

A 、]5[.rpos T ;
B 、Tu T .

C 、e data T ].5[.;
D 、]5[.]6[.rpos T rpos T 。

23. 如下为一广义表的扩展线性链表存储表示如图3所示,其表示的广义表为( )。

A 、((),a ,((b ,c ),(),d ),(((e ))));
B 、((()),a ,((b ,c ),(),d ),(((e ))));
C 、((()),a ,(b ,c ,(),d ),(((e ))));
D 、((()),a ,((b ,c ),(),d ),((e )))。

24. 广义表A=(a ,(b),(),(c,d,e))的长度为( ) A.3 B.4 C.5 D.6
四、应用题(24分)
1.(6分)某广义表的表头和表尾均为(a,(b,c)),画出该广义表的图形表示。

2.(6分)
1 3 50 0 1 1 12
2 2 18 1 2 2 -22
3 4 -25 2 2 5 69
4 2 28 3 3 4 25
5 3 10 4 4 1 33
5 4 2 15
请画出这两个稀疏矩阵之和的三元组表。

1 1 12
1 3 50
2 2 -4
2 5 69
4 1 33
4 2 43
5 3 10
3、(12分)函数strcmp()是比较两个字符串s 和t 的大小。

若s < t 函数返回负数;若s = t 函数返回0;若s > t,函数返回正数。

int strcmp(char *s,char *t)
{ while ( *s && *t && __*s!=*t__){
s++;t++ ;
}
return __ *s- *t____;
}。

相关文档
最新文档