第4章-串-数组与广义表-自测题
栈、队列、串、数组和广义表习题

栈、队列、串、数组和广义表习题一、选择题1 一个栈的输入序列为1234 5,则下列序列中不可能是栈的输出序列的是()。
A. 2 3 4 1 5B. 5 4 1 3 2C. 2 3 1 4 5D. 1 5 4 3 22 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,p N,若p N是n,则p i是( )。
A. iB. n-iC. n-i+1D. 不确定3 若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?( )A. 1和 5B. 2和4C. 4和2D. 5和14 设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次通过栈S,一个元素出栈后即进队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1则栈S的容量至少应该是( )。
A. 6 B. 4 C. 3 D. 25 设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为()A.求子串 B.联接 C.匹配 D.求串长6 设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为()。
A. 13B. 33C. 18D. 407 已知广义表LS=((a,b,c),(d,e,f)),运用head和tail函数取出LS中原子e的运算是( )。
A. head(tail(LS))B. tail(head(LS))C. head(tail(head(tail(LS)))D. head(tail(tail(head(LS))))8 模式串t=‘abcaabbcabcaabdab’,该模式串的next数组的值为( D ),nextval数组的值为( F )。
A.0 1 1 1 2 2 1 1 1 2 3 4 5 6 7 1 2 B.0 1 1 1 2 1 2 1 1 2 3 4 5 6 1 1 2 C.0 1 1 1 0 0 1 3 1 0 1 1 0 0 7 0 1 D.0 1 1 1 2 2 3 1 1 2 3 4 5 6 7 1 2 E.0 1 1 0 0 1 1 1 0 1 1 0 0 1 7 0 1 F.0 1 1 0 2 1 3 1 0 1 1 0 2 1 7 0 1二、填空题1 在作进栈运算时应先判别栈是否_(1)_;在作退栈运算时应先判别栈是否_(2)_;当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为_(3)_。
数据结构 第四章 串 考研真题精选

考研真题精选一、选择题1.下面关于串的的叙述中,哪一个是不正确的?()A.串是字符的有限序列B.空串是由空格构成的串C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储2 若串S1=‘ABCDEFG’, S2=‘9898’,S3=‘###’,S4=‘012345’,执行concat(replace(S1,substr(S1,length(S2),length(S3)),S3),substr(S4,index(S2,‘8’),length(S2)))其结果为()A.ABC###G0123 B.ABCD###2345 C.ABC###G2345 D.ABC###2345E.ABC###G1234 F.ABCD###1234 G.ABC###012343.设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为()A.求子串B.联接C.匹配D.求串长4.已知串S=‘aaab’,其next数组值为()。
A.0123 B.1123 C.1231 D.12115.串‘ababaaababaa’的next数组为()。
A.012345678999 B.012121111212 C.011234223456 D.0123012322345 6.字符串‘ababaabab’的nextval 为()A.(0,1,0,1,04,1,0,1) B.(0,1,0,1,0,2,1,0,1)C.(0,1,0,1,0,0,0,1,1) D.(0,1,0,1,0,1,0,1,1 )7.模式串t=‘abcaabbcabcaabdab’,该模式串的next数组的值为(),nextval数组的值为()。
A.0 1 1 1 2 2 1 1 1 2 3 4 5 6 7 1 2 B.0 1 1 1 2 1 2 1 1 2 3 4 5 6 1 1 2C.0 1 1 1 0 0 1 3 1 0 1 1 0 0 7 0 1 D.0 1 1 1 2 2 3 1 1 2 3 4 5 6 7 1 2E.0 1 1 0 0 1 1 1 0 1 1 0 0 1 7 0 1 F.0 1 1 0 2 1 3 1 0 1 1 0 2 1 7 0 18.若串S=’software’,其子串的数目是()。
数据结构第4章 数组和广义表

第4章数组和广义表【例4-1】二维数组A的每一个元素是由6个字符组成的串,其行下标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]解:二维数A是一个9行10列的矩阵,即A[9][10]。
按行存储时,A[8][5]是第85个元素存储的元素。
而按列存储时,第85个存储的元素是A[3][10]。
即正确答案为B。
【例4-2】若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[n(n+1)/2]中,则在B中确定的位置k的关系为()。
A.jii+-2)1(*B.ijj+-2)1(*C.jii++2)1(*D.ijj++2)1(*解:如果a ij按行存储,那么它的前面有i-1行,其有元素个数为:1+2+3+…+(i-1)=i(i-1)/2。
同时它又是所在行的第j列,因此它排列的顺序还得加上j,一维数组B[n(n+1)/2]中的位置k与其下标的关系是:jii+-2)1(*。
因此答案为A。
【例4-3】已知n阶下三角矩阵A,按照压缩存储的思想,可以将其主对角线以下所有元素(包括主对角线上元素)依次存放于一维数组B中。
请写出从第一列开始以列序为主序分配方式时在B中确定元素a ij的存放位置的公式。
解:如果a ij按列存储,那么它的前面有j-1列,共有元素:n+(n-1)+(n-2)+ …+[n-(j-2)]=(j-1)*n-2)1)(2(--jj而它又是所在列的第i行,因此在它前的元素个数还得加上i。
因此它在一维数组B中的存储顺序为:(j-1)*n-2)1)(2(--jj+i【例4-4】已知广义表L=((x,y,z),a,(u,t,w)),从L表中取出的原子项ASCII码最大的运算是()。
第4章 串与数组 习题参考答案

习题四参考答案一、选择题1.下面关于串的叙述中,哪一个是不正确的?(B )A.串是字符的有限序列B.空串是由空格构成的串C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储2.串的长度是指( A )A. 串中包含的字符个数B. 串中包含的不同字符个数C. 串中除空格以外的字符个数D. 串中包含的不同字母个数3.设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为( C )A.求子串B.联接C.模式匹配D.求串长4.设主串的长度为n,模式串的长度为m,则串匹配的KMP算法时间复杂度是( C )。
A. O(m)B. O(n)C. O(n + m)D. O(n×m)5. 串也是一种线性表,只不过( A )。
A. 数据元素均为字符B. 数据元素是子串C. 数据元素数据类型不受限制D. 表长受到限制6.设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主进行存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为( B )。
A. 13B. 33C. 18D. 407. 有一个二维数组A[1..6, 0..7] ,每个数组元素用相邻的6个字节存储,存储器按字节编址,那么这个数组占用的存储空间大小是(D )个字节。
A. 48B. 96C. 252D. 2888.设有数组A[1..8,1..10],数组的每个元素占3字节,数组从内存首地址BA开始以列序为主序顺序存放,则数组元素 A[5,8]的存储首地址为( B )。
A. BA+141B. BA+180C. BA+222D. BA+2259. 稀疏矩阵的三元组存储表示方法( B )A. 实现转置操作很简单,只需将每个三元组中行下标和列下标交换即可B. 矩阵的非零元素个数和位置在操作过程中变化不大时较有效C. 是一种链式存储方法D. 比十字链表更高效10. 用十字链表表示一个稀疏矩阵,每个非零元素一般用一个含有( A )域的结点表示。
数组和广义表习题

一、填空题1.通常采用___________存储结构来存放数组。
对二维数组可有两种存储方法:一种是以___________为主序的存储方式,另一种是以___________为主序的存储方式。
2. 用一维数组B与列优先存放带状矩阵A中的非零元素A[i,j] (1≤i≤n,i-2≤j≤i+2),B 中的第8个元素是A 中的第_ _行,第_ _列的元素。
3.设n行n列的下三角矩阵A已压缩到一维数组B[1..n*(n+1)/2]中,若按行为主序存储,则A[i,j]对应的B中存储位置为_______。
4. 所谓稀疏矩阵指的是_ 。
5. 广义表简称表,是由零个或多个原子或子表组成的有限序列,原子与表的差别仅在于____ 。
为了区分原子和表,一般用 ____表示表,用 _____表示原子。
一个表的长度是指 __,而表的深度是指__ __6、设数组a[1..50,1..80]的基地址为2000,每个元素占2个存储单元,若一行序为主序顺序存储,则元素a[45,68]的存储地址为;若以列序为主序存储,则元素a[45,68]的存储地址为。
7、有一个8ⅹ8的下三角矩阵A,若采用行序为主序顺序存储于一维数组a[1..n],则n的值为。
8、三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素的、和。
9、已知广义表A=(((a))),则A的表头为:,A的表尾为:。
10、求下列广义表操作的结果:(1)Head ((a,b),(c,d)) == ; //头元素不必加括号(2)Head(Tail((a,b),(c,d)))== ;(3)Head(Tail(Head((a,b),(c,d))))== ;(4)Tail(Head(Tail((a,b),(c,d))))== ;11、设W为一个二维数组,其每个数据元素占用4个字节,行下标i从0到7 ,列下标j从0到3 ,则二维数组W的数据元素共占用_______个字节。
第4章 数组和广义线性表答案

第4章 数组和广义表 自测卷答案 姓名 班级一、填空题1. 假设有二维数组A 6×8,每个元素用相邻的6个字节存储,存储器按字节编址。
已知A 的起始存储位置(基地址)为1000,则数组A 的体积(存储量)为 288 B ;末尾元素A 57的第一个字节地址为 1282 ;若按行存储时,元素A 14的第一个字节地址为 (8+4)×6+1000=1072 ;若按列存储时,元素A 47的第一个字节地址为 (6×7+4)×6+1000)=1276 。
(注:数组是从0行0列还是从1行1列计算起呢?由末单元为A 57可知,是从0行0列开始!)2.设数组a[1…60, 1…70]的基地址为2048,每个元素占2个存储单元,若以列序为主序顺序存储,则元素a[32,58]的存储地址为 8950 。
答:不考虑0行0列,利用列优先公式: LOC(a ij )=LOC(a c 1,c 2)+[(j-c 2)*(d 1-c 1+1)+i-c 1)]*L 得:LOC(a 32,58)=2048+[(58-1)*(60-1+1)+32-1]]*2=89503. 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素 的 行下标 、 列下标 和 元素值 。
4.求下列广义表操作的结果:(1) GetHead 【((a,b),(c,d))】=== (a, b) ; //头元素不必加括号 (2) GetHead 【GetTail 【((a,b),(c,d))】】=== (c,d) ; (3) GetHead 【GetTail 【GetHead 【((a,b),(c,d))】】】=== b ; (4) GetTail 【GetHead 【GetTail 【((a,b),(c,d))】】】=== (d ) ;二、单选题( A )1.假设有60行70列的二维数组a[1…60, 1…70]以列序为主序顺序存储,其基地址为10000,每个元素占2个存储单元,那么第32行第58列的元素a[32,58]的存储地址为 。
栈、队列、串、数组和广义表习题及答案

栈、队列、串、数组和广义表习题一、选择题1 一个栈的输入序列为1234 5,则下列序列中不可能是栈的输出序列的是( B )。
A. 2 3 4 1 5B. 5 4 1 3 2C. 2 3 1 4 5D. 1 5 4 3 22 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,p N,若p N是n,则p i是( D )。
A. iB. n-iC. n-i+1D. 不确定3 若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?( B )A. 1和 5B. 2和4C. 4和2D. 5和14 设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次通过栈S,一个元素出栈后即进队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1则栈S的容量至少应该是( C )。
A. 6 B. 4 C. 3 D. 25 设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为( C )A.求子串 B.联接 C.匹配 D.求串长6 设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为( B )。
A. 13B. 33C. 18D. 407 已知广义表LS=((a,b,c),(d,e,f)),运用head和tail函数取出LS中原子e的运算是( C )。
A. head(tail(LS))B. tail(head(LS))C. head(tail(head(tail(LS)))D. head(tail(tail(head(LS))))8 模式串t=‘abcaabbcabcaabdab’,该模式串的next数组的值为( D ),nextval数组的值为( F )。
A.0 1 1 1 2 2 1 1 1 2 3 4 5 6 7 1 2 B.0 1 1 1 2 1 2 1 1 2 3 4 5 6 1 1 2 C.0 1 1 1 0 0 1 3 1 0 1 1 0 0 7 0 1 D.0 1 1 1 2 2 3 1 1 2 3 4 5 6 7 1 2 E.0 1 1 0 0 1 1 1 0 1 1 0 0 1 7 0 1 F.0 1 1 0 2 1 3 1 0 1 1 0 2 1 7 0 1二、填空题1 在作进栈运算时应先判别栈是否_(1)满_;在作退栈运算时应先判别栈是否_(2)空_;当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为_(3)n_。
PTA第四章串、数组和广义表练习题

B(2.0) D(2.0) D(2.0) D(2.0) D(2.0) A(2.0) B(2.0) B(2.0) D(2.0) C(2.0) D(2.0) D(2.0)2-1广义表是一种(B)数据结构。
(2分)1.非递归的2.递归的3.树型4.图状作者: 严冰单位: 浙江大学城市学院2-2一个广义表为( a, (b, c), d, (), ((f, g), h) ),则该广义表的长度与深度分别为(D)。
(2分)1.4和62.6和33.3和54.5和3作者: 严冰单位: 浙江大学城市学院2-3稀疏矩阵的快速转置算法的时间复杂度是(D)。
(2分)1.三次方时间2.二次方时间3.对数时间4.线性时间作者: 严冰单位: 浙江大学城市学院2-4在定义稀疏矩阵的十字链接存储结构时,每个结点结构需包含(D)个域。
(2分)1. 42. 33. 64. 5作者: 严冰单位: 浙江大学城市学院2-5广义表与稀疏矩阵都是线性表的扩展,它们的共同点为(D)。
(2分)1.都可以用链接结构与顺序结构存储2.无共同点3.都是递归结构4.数据元素本身是一个数据结构作者: 严冰单位: 浙江大学城市学院2-6(neuDS_C++)以下叙述中正确的是(A )。
(2分)1.串是一种特殊的线性表2.串的长度必须大于零3.串中元素只能是字母4.空串就是空白串作者: 姚志军单位: 广东东软学院2-7(neuDS_C++)串是一种特殊的线性表,其特殊性体现在(B )。
(2分)1.可以顺序存储2.数据元素是一个字符3.可以链接存储4.数据元素可以是多个字符作者: 姚志军单位: 浙江大学2-8(neuDS_C++)设有两个串p和q,求q在p中首次出现的位置的运算称作( B)。
(2分)1.连接2.模式匹配3.求子串4.求串长作者: 姚志军单位: 广东东软学院2-9(neuDS_C++)设串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))的结果串是(D )。