严魏敏-习题-串-数组-广义表-04

选择题

(1)串是一种特殊的线性表,其特殊性体现在( B )。
A. 可以顺序存储
B. 数据元素是单个字符
C. 可以链式存储
D. 数据元素可以是多个字符

(2)下列关于串的的叙述中,不正确的是( B )。
A. 串是字符的有限序列
B. 空串是由空格构成的串
C. 模式匹配是串的一种重要运算
D. 串既可以采用顺序存储,也可以采用链式存储

空格在串中是有码的,空格什么也没有

(3)串“ababaaababaa”的next数组为( C )。
A. 012345678999
B. 012121111212
C. 011234223456
D. 0123012322345

(4)串“ababaabab”的nextval为(A)。
A. 010104101
B. 010102101
C. 010100011
D. 010101011
在这里插入图片描述

(5)串的长度是指( B )。
A. 串中所含不同字母的个数
B. 串中所含字符的个数
C. 串中所含不同字符的个数
D. 串中所含非空格字符的个数

(6)假设以行序为主序存储二维数组A=array[1…100,1…100],设每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=(B )。
A. 808
B. 818
C. 1010
D. 1020

[(4*100+4)*2]+10=818

(7)设有数组A[i, j],数组的每个元素长度为3字节,i的值为1~8,j的值为1~10,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为( B)。
A. BA+141
B. BA+180
C. BA+222
D. BA+225

(8*7+4)*3

(8)设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为( C )。
A. 13
B. 32
C. 33
D. 40

*?

(9)若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1…(n(n+1))/2]中,则在B中确定aij(i<j)的位置k的关系为( B )。
A. i×(i−1)/2+j
B. j×(j−1)/2+i
C. i×(i+1)/2+j
D. j×(j+1)/2+i
在这里插入图片描述

(10)二维数组A的每个元素是由10个字符组成的串,其行下标i=0,1,…,8,列下标j=1,2,…,10。若A按行先存储,元素A[8, 5]的起始地址与当A按列先存储时的元素( )的起始地址相同。设每个字符占一个字节。
A. A[8, 5]
B. A[3, 10]
C. A[5, 8]
D. A[0, 9]

1 2 3 4 5 6 7 8 9 10
0  
1
2
3    			 3,10
4
5              
6
7
8       8,5

(8*10+4)=84
(9*9+3)=84

(11)设二维数组A[1… m,1… n](即m行n列)按行存储在数组B[1… m×n]中,则二维数组元素A[i, j]在一维数组B中的下标为( )。
A. (i−1)×n+j
B. (i−1)×n+j−1
C. i×(j−1)
D. j×m+i−1

特殊值带入
a11,在位置数组中的第一个位置,i=1;j=1带入,选项得出:
A:1
B:0
C:0
D:m

(12)数组A[0…4,−1…−3,5…7]中含有元素的个数为( B )。
A. 55
B. 45
C. 36
D. 16

(7-5+1)*(-1+3+1)*(4-0+1)=3*3*5=45

(13)广义表A=(a,b,(c,d),(e,(f,g))),则Head(Tail(Head(Tail(Tail(A)))))的值为( D )。
A. (g)
B. (d)
C. c
D. d
(14)广义表((a,b,c,d))的表头是( C ),表尾是( B )。
A. a
B. ( )
C. (a, b, c, d)
D. (b, c, d)
(15)设广义表L=((a,b,c)),则L的长度和深度分别为( C )。
A. 1和1
B. 1和3
C. 1和2
D. 2和3

长度是字符的个数
深度是括号的个数

应用题

(1)已知模式串t=“abcaabbabcab”,写出用KMP法求得的每个字符对应的next和nextval函数值。
(2)设目标为t=“abcaabbabcabaacbacba”,模式为p=“abcabaa”。① 计算模式p的nextval函数值;② 画出利用KMP算法进行模式匹配时每一趟的匹配过程。
(3)数组A中,每个元素A[i, j]的长度均为32个二进制位,行下标从−1~9,列下标从1~11,从首地址S开始连续存放在主存储器中,主存储器字长为16位。求:① 存放该数组所需多少单元?② 存放数组第4列所有元素至少需多少单元?③ 数组按行存放时,元素A[7, 4]的起始地址是多少?④ 数组按列存放时,元素A[4, 7]的起始地址是多少?
(4)请将香蕉banana用工具H( )—Head( ),T( )—Tail( )从L中取出。L=(apple, (orange, (strawberry, (banana)), peach), pear)

算法设计题

(1)写一个算法统计在输入字符串中各个不同字符出现的频度并将结果存入文件(字符串中的合法字符为A~Z这26个字母和0~9这10个数字)。
(2)写一个递归算法来实现字符串逆序存储,要求不另设串存储空间。
(3)编写算法,实现下面函数的功能。函数void insert(chars, chart, int pos)将字符串t插入到字符串s中,插入位置为pos。假设分配给字符串s的空间足够让字符串t插入。(说明:不得使用任何库函数)
(4)已知字符串S1中存放一段英文,写出算法format(s1, s2, s3, n),将其按给定的长度n格式化成两端对齐的字符串S2(即长度为n且首尾字符不得为空格字符),其多余的字符送S3。
(5)设二维数组a[1…m,1…n]含有m×n个整数。① 写一个算法判断a中所有元素是否互不相同?输出相关信息(yes/no);② 试分析算法的时间复杂度。
(6)设任意n个整数存放于数组A[1…n]中,试编写算法,将所有正数排在所有负数前面(要求:算法时间复杂度为O(n))。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值