跳转至

Relax1000 数据结构 · 第3、4章 栈、队列、数组、字符串 · 题目

第3、4章 栈、队列、数组、字符串

本章 64 题;题目册印刷页 12–19。

Q1

通常最适合用做链式队列的链表是( )。

  • A.带队首指针和队尾指针的循环单链表
  • B.带队首指针和队尾指针的非循环单链表
  • C.只带队首指针的非循环单链表
  • D.只带队首指针的循环单链表

查看解析

Q2

有一个空栈,栈顶指针指向栈顶元素(每个元素占一个存储单元),当前栈顶指针为 1006H,入栈方向为指针增大的方向。执行 Push、Push、Push、Push、Pop、Push、Pop、Push 操作后,栈顶指针的值为( )。

  • A.1008H
  • B.1009H
  • C.1010H
  • D.100AH

查看解析

Q3

用字母“I”表示入栈,“O”表示出栈,对于入栈序列为“1234”,入栈出栈可交叉进行,得到出栈序列为“2431”的操作序列为( )。

  • A.IIOIOIOO
  • B.IIOIIOOO
  • C.IIIOOOIO
  • D.IOIIOIOO
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q3 原页片段

查看解析

Q4

有一个非空栈 S,栈顶指针 sp 指向栈顶元素(每个元素大小占一个存储单元),入栈方向是地址增大的方向,设入栈元素是 x,那么入栈操作是( )。

  • A.S[sp ++ ] = x;
  • B.S[ ++ sp] = x;
  • C.S[sp -- ] = x;
  • D.S[ -- sp] = x;
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q4 原页片段

查看解析

Q5

若元素“1,2,...,n”依次进入初始为空的栈中,元素入栈后可停留可出栈,直到所有的元素都出栈,若第 k(1≤k<n)个出栈元素是“1”,那么第 k+1 个出栈元素的可能取值有( )种。

  • A.k
  • B.n - k
  • C.n - 1
  • D.k + 1
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q5 原页片段

查看解析

Q6

一个栈的入栈序列是 1,2,3,...,〔公式/符号见原页版面片段〕,则出栈序列〔公式/符号见原页版面片段〕1,〔公式/符号见原页版面片段〕2,〔公式/符号见原页版面片段〕3,⋯,〔公式/符号见原页版面片段〕中,元素 1 的可能位置有多少个( )。

  • A.1
  • B.n-1
  • C.n
  • D.n/2
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q6 原页片段

查看解析

Q7

一个栈的入栈序列为 1,2,3,...,n,出栈序列是 P1,P2,P3,...,Pn。若 P2=3,则下列说法正确的是( )。
I. 若 P1=1,P3 的可能取值有 n-2 种
II. 若 P1=2,P3 的可能取值有 n-2 种
III. 若 P1=4,P3 的可能取值有 n-2 种

  • A.I、II、III
  • B.I、II
  • C.I、III
  • D.II、III
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q7 原页片段

查看解析

Q8

入栈序列为 1234 的出栈序列个数有( )个。

  • A.13
  • B.14
  • C.15
  • D.16
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q8 原页片段

查看解析

Q9

一个栈(容量为 3)的进栈序列为 1,2,3,4,那么有( )个不同的出栈序列?

  • A.15
  • B.14
  • C.13
  • D.12
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q9 原页片段

查看解析

Q10

设 n 个元素进栈序列是 P1,P2,...,Pn,输出序列是 1,2,..n,若 Pn=1,则 Pi(1≤i≤n-1)的值是( )。

  • A.n-i+1
  • B.n-i
  • C.i
  • D.有多种可能
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q10 原页片段

查看解析

Q11

若一个栈的入栈顺序为 1, 2, 3, 4, 5,则不能得到的出栈顺序为( ) 。

  • A.4,3,2,1,5
  • B.3,2,5,1,4
  • C.4,5,3,2,1
  • D.3,4,2,5,1

查看解析

Q12

元素 a,b,c,d,e 依次进入初始为空的栈中,若元素进栈后可停留、可出栈,直到所有元素都出栈,则在所有可能的出栈序列中,以元素 d 开头的序列个数是( )。

  • A.3
  • B.4
  • C.5
  • D.6
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q12 原页片段

查看解析

Q13

采用共享栈的好处是( )。

  • A.减少存取时间,降低发生上溢的可能
  • B.节省存储空间,降低发生上溢的可能
  • C.减少存取时间,降低发生下溢的可能
  • D.节省存储空间,降低发生下溢的可能

查看解析

Q14

设有一个顺序共享栈 share[0:n-1],其中第一个栈顶指针 top1 的初值为-1,第二个栈顶指针 top2的初值为 n,则判断共享栈满的条件是( )。

  • A.top2-top1 == 1
  • B.top1-top2 == 1
  • C.top1==top2
  • D.top1-top2 == 2
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q14 原页片段

查看解析

Q15

中缀表达式 A * (B+C)/(D-E+F)的后缀表达式是( )。

  • A.A*B+C/D-E+F
  • B.ABC+ * DE-F+/
  • C.AB * C+D/E-F+
  • D.ABCDEF*+/-+
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q15 原页片段

查看解析

Q16

若 A=10、B=4、C=6、D=4、E=15 则后缀表达式“AB*CD+-E+”的值为( )。

  • A.45
  • B.31
  • C.53
  • D.65
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q16 原页片段

查看解析

Q17

对于后缀表达式 5 8 * 2 7 * 4 - * 8 +所表示的表达式求值,结果为( )。

  • A.392
  • B.400
  • C.568
  • D.408
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q17 原页片段

查看解析

Q18

利用栈求表达式的值时,设立运算数栈 OPEN。假设 OPEN 只有两个存储单元,则在下列表达式中,不会发生溢出的是( )。

  • A.A-B * (C-D)
  • B.(A-B) * C-D
  • C.(A-B * C)-D
  • D.(A-B) * (C-D)
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q18 原页片段

查看解析

Q19

中缀表达式转换成后缀表达式,用栈来存放还不能确定运算次序的操作符。栈初始为空,下列中缀表达式中,转后缀表达式过程中用到栈空间最大的是( )。

  • A.A+ B - C * (D + E) / F
  • B.(A + B ) * ( C - D ) / E + F
  • C.A* B - ( C + D ) / ( E - F )
  • D.(A + B * ( C - D ) ) / ( E + F)
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q19 原页片段

查看解析

Q20

中缀表达式 a+b-c 的前缀表达式为( )。

  • A.ab+c-
  • B.+-abc
  • C.-+abc
  • D.+a-bc
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q20 原页片段

查看解析

Q21

a * ( b + c ) - d 的前缀表达式是( )。

  • A.a b c d * + -
  • B.a b c + * d -
  • C.- * a + b c d
  • D.- + * a b c d
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q21 原页片段

查看解析

Q22

以下关于栈和队列应用场景的描述,哪一个是正确的?( )。

  • A.在实现函数调用和递归过程中,通常使用队列来存储局部变量和返回地址
  • B.在实现图的广度优先搜索(BFS)算法时,通常使用栈作为辅助数据结构
  • C.在实现括号匹配问题时,通常使用队列作为辅助数据结构
  • D.在实现图的深度优先搜索(DFS)算法时,通常使用栈作为辅助数据结构

查看解析

Q23

用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时( )。

  • A.仅修改队头指针
  • B.仅修改队尾指针
  • C.队头和队尾指针都要修改
  • D.队头和队尾指针都可能要修改

查看解析

Q24

某带链的队列初始状态为 front=rear=NULL。经过一系列正常的入队与退队操作后,front=rear。该队列中的元素个数为( )。

  • A.1
  • B.0
  • C.1 或 0
  • D.不确定
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q24 原页片段

查看解析

Q25

假设用 Q[0..M]实现环形队列,f 作为队头指针指向队头元素的前一个位置,r 作为队尾指针指向队尾元素。若用(r+1)%(M+1) == f 作为队满的标志,则( )。

  • A.可用 f == r 作为队空的标志
  • B.可用 f > r作为队空的标志
  • C.可用(f+1) % (M+1) == r 作为队空的标志
  • D.队列中最多可以有 M+1 个元素
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q25 原页片段

查看解析

Q26

循环队列放在一维数组 A[0..M-1] 中,front 指向队头元素,rear 指向队尾元素的后一个位置,队列中最多能容纳 M-1 个元素,若当前队列有 k个元素(0<k<M-1),则下列关于入队操作(元素值为value)和出队操作(保存到 q 中),正确的是( )。

  • A.入队操作:A[ ++ rear] = value; 出队操作:q = A[front ++ ];
  • B.入队操作:A[rear ++ ] = value; 出队操作:q = A[front ++ ];
  • C.入队操作:rear = (rear + 1)% M;A[rear]= value; 出队操作:q =A[front];front= (front + 1)% M;
  • D.入队操作:A[rear]= value;rear = (rear+ 1) % M; 出队操作:q =A[front];front= (front + 1)% M;
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q26 原页片段

查看解析

Q27

循环队列放在一维数组 A[0..M-1] 中,end1 指向队头元素,end2 指向队尾元素。假设队列两端均可进行入队和出队操作,队列中最多能容纳 M-1 个元素。初始时为空。下列判断队空和队满的条件中,正确的是( )。

  • A.队空:end1 == end2; 队满:end1 == end2;
  • B.队空:end1 == (end2 + 1) mod M; 队满:end1 == (end2 + 1) mod (M - 1)
  • C.队空:end1 == (end2 + 1) mod M; 队满:end1 == (end2 + 2) mod M
  • D.队空:end1 == end2; 队满:end2 == (end1 + 1) mod M
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q27 原页片段

查看解析

Q28

循环队列放在一维数组 A[0,...,M-1]中,front 指向队头元素,rear指向队尾元素的后一个位置。数组大小不可扩展,并且不考虑额外开销的情况下,该队列的剩余可用空间为( )。

  • A.M- (rear - front)
  • B.M- (rear - front) % (M - 1)
  • C.M- (rear - front + M) % M
  • D.M - 1 - (rear - front + M) % M
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q28 原页片段

查看解析

Q29

若用一个大小为 6 的数组来实现环形队列,rear 作为队尾指针指向队列中尾部元素,front 作为队头指针指向队头元素的前一个位置。当前 rear和 front 的值分别是 0 和 3,当从队列中删除一个元素,再加入两个元素后,rear和 front 的值分别是( )。

  • A.1 和 5
  • B.2 和 4
  • C.4 和 2
  • D.5 和 1
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q29 原页片段 第34章 Q29 原页片段

查看解析

Q30

若循环队列使用数组 A[0...m-1]存放数据元素,已知头指针 front 指向队首元素,尾指针 rear 指向队尾元素后的空单元,则当前队列中的元素个数为( )。

  • A.(rear-front+m) % m
  • B.rear - front + 1
  • C.rear -front
  • D.rear-front-1
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q30 原页片段

查看解析

Q31

已知循环队列存储在数组 A[m]中,length 表示循环队列中的元素个数,front 指向队首元素,rear 指向队尾元素,则 front所在位置应该是( )。

  • A.rear -length
  • B.(rear - length + m)% m
  • C.(rear+m+1-length)% m
  • D.(rear + length -1)% m
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q31 原页片段

查看解析

Q32

下列叙述中正确的是( )。

  • A.在栈中,栈顶指针的动态变化决定栈中元素的个数
  • B.在循环队列中,队尾指针的动态变化决定队列的长度
  • C.在循环链表中,头指针和链尾指针的动态变化决定链表的长度
  • D.在线性链表中,头指针和链尾指针的动态变化决定链表的长度

查看解析

Q33

一个队列只能从右侧入队,左右侧皆可出队。顺序为 Ka、Kb、Kc、Kd、Ke 的序列入队后,不能得到的输出是( )。

  • A.Ka->Kb->Kc->Kd->Ke
  • B.Ke->Kd->Kc->Kb->Ka
  • C.Ka->Kb->Ke->Kc->Kd
  • D.Ke->Ka->Kc->Kb->Kd
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q33 原页片段

查看解析

Q34

若某队列允许在其两端进行入队操作,但仅允许在一端进行出队操作,允许入队出队操作交替进行。若入队序列为 a,b,c,d,e,则下列出队序列中,可能得到的有( )。
I.b,a,c,d,e
II.d,b,a,c,e
III.d,b,c,a,e
IV.b,c,a,d,e

  • A.I、II、IV
  • B.III、IV
  • C.I、II
  • D.II、IV
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q34 原页片段

查看解析

Q35

设一个输入序列为 a,b,c,d,借助一个输出受限的双向队列,所得到的输出序列不可能是( )。

  • A.d,a,c,b
  • B.c,a,d,b
  • C.a,b,c,d
  • D.b,d,a,c
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q35 原页片段

查看解析

Q36

在输入受限的双端队列中,输入序列是 1,2,...,n,输出序列是〔公式/符号见原页版面片段〕1,〔公式/符号见原页版面片段〕2,〔公式/符号见原页版面片段〕3,〔公式/符号见原页版面片段〕4,若〔公式/符号见原页版面片段〕1 = 〔公式/符号见原页版面片段〕,〔公式/符号见原页版面片段〕2的取值有( )种。

  • A.n-1
  • B.n-2
  • C.2
  • D.1
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q36 原页片段

查看解析

Q37

有一个队列 Q 和一个栈 S,已知入栈和入队的顺序都是 1,2,3,....,n(n>6),出栈或出队操作可以在任意一次入栈或入队或发生,则下列说法错误的是( )。

  • A.任何情况下出队的顺序都为 1,2,3,......,n
  • B.如果第一个出栈的数字是 n-2,则第二个出栈的数字可能是 n
  • C.如果第一个出栈的数字是 n-3,则第三个出栈的数字可能是 n-6
  • D.如果第一个出栈的数字是 n-3,则第三个出栈的数字可能是 n-4

查看解析

Q38

下列关于栈的说法错误的是( )。

  • A.可以使用两个队列实现一个后入先出的栈
  • B.可以使用一个队列实现一个后入先出的栈
  • C.可以使用两个栈实现先入先出队列
  • D.可以使用一个栈实现先入先出队列

查看解析

Q39

设栈 S 和队列 Q 的初始状态为空,元素 e1-e6 依次通过栈 S,一个元素出栈后即入队列 Q,若6 个元素出队的序列是 e2、e4、e3、e6、e5、e1,则栈 S 的容量至少应该是( )。

  • A.5
  • B.4
  • C.3
  • D.2
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q39 原页片段

查看解析

Q40

数组 A[ 0...5 ] [ 0...6 ]的每个元素占 5 个单元,将其按列优先次序存储在起始地址为 1000 的连续内存单元中,则元素 a[5] [5]的地址为( )。

  • A.1175
  • B.1180
  • C.1205
  • D.1210
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q40 原页片段

查看解析

Q41

二维数组 M的元素是 4个字符(每个字符占一个存储单元)组成的串,行下标 i的范围从 0到 4,列下标 i 的范围从 0 到 5,M 按行存储时元素 M[3,5]的起始地址与 M 按列存储时元素( )的起始地址相同。

  • A.M[2, 4]
  • B.M[3, 4]
  • C.M[3, 5]
  • D.M[4, 4]
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q41 原页片段

查看解析

Q42

将一个 10×10 的对称矩阵 M 的下三角部分的元素〔公式/符号见原页版面片段〕,〔公式/符号见原页版面片段〕(1 ≤ 〔公式/符号见原页版面片段〕 ≤ 〔公式/符号见原页版面片段〕 ≤ 10)按列优先存入 C 语言的一维数组N中,元素类型为结构体,N的首地址是1000,按字节编址,结构体内部成员构成如下图所示,则元素〔公式/符号见原页版面片段〕6,10的成员 b 所在的地址为( )。struct M{ char a; int b; short c; };

  • A.1604
  • B.1444
  • C.1532
  • D.1504
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q42 原页片段

查看解析

Q43

设有一个 10 阶的对称矩阵 A,采用压缩存储方式,按行优先存储其下三角部分,且设 A[1] [1]为第一个元素,在 B 中存储于 B[1]中,那么 A[8] [5]在 B 中的存放位置是( )。

  • A.13
  • B.32
  • C.33
  • D.40
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q43 原页片段

查看解析

Q44

将一个n×n的对称矩阵A的下三角部分按行存放在一个一维数组B中,A[0][0]存放在B[0]中,那么第 i行的对角元素 A[i] [i]在 B 中的存放位置是( )。

  • A.(i+3) * i/2
  • B.(i+1)* i/2
  • C.(2n-i+1)* i / 2
  • D.(2n-i-1)* i / 2
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q44 原页片段

查看解析

Q45

下 三 角 矩 阵 A(n*n) 按 列 优 先 顺 序 压 缩 在 数 组 S[(n+1) * n/2] 中 , 若 非 零 元 素 〔公式/符号见原页版面片段〕(i ≥ j;i、j、k 从 0 开始编号)存放在 S[k]中(矩阵 A 和数组 S 标号都从 0 开始),则 i,j,k 的关系为( )。

  • A.k = i × n + j
  • B.k =(2n - j + 1) × j / 2 + i - j
  • C.k = (i + 1) × i / 2 + j
  • D.k = (2n - j + 1) × j / 2 + i
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q45 原页片段

查看解析

Q46

设 A 是 n×n 的对称矩阵,将 A 的对角线及对角线上方的元素按以列为主的次序存放在一维数组 B[1..n(n+1)/2]中,对上述任一元素 aij(1 <= i,j <= n,且 i>=j)在 B 中的位置为( )。

  • A.〔公式/符号见原页版面片段〕 − 1 /2 + 〔公式/符号见原页版面片段〕
  • B.〔公式/符号见原页版面片段〕 − 1 /2 + 〔公式/符号见原页版面片段〕
  • C.〔公式/符号见原页版面片段〕 − 1 /2 + 〔公式/符号见原页版面片段〕 − 1
  • D.〔公式/符号见原页版面片段〕 − 1 /2 + 〔公式/符号见原页版面片段〕 − 1
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q46 原页片段

查看解析

Q47

稀疏矩阵的三元组存储方法( )。

  • A.实现转置运算很简单,只需将每个三元组的行标和列标交换
  • B.是一种链式存储方法
  • C.矩阵的非零元个数和位置在操作过程中变化不大时较有效
  • D.比十字链表法更高效
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q47 原页片段

查看解析

Q48

已知一稀疏矩阵的三元组表为(1,2,3)、(1,6,1)、(3,1,5)、(3,2,-1)、(5,4,5)、(5,1,-3),则其转置矩阵的三元组表中第 3 个三元组(都是按行优先排列)为( )。

  • A.(2,1,3)
  • B.(3,1,5)
  • C.(3,2,-1)
  • D.(2,3,-1)
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q48 原页片段

查看解析

Q49

对稀疏矩阵采用压缩存储,其缺点之一是( )。

  • A.无法判断矩阵有多少行多少列
  • B.无法根据行列号查找某个矩阵元素
  • C.无法根据行列号计算矩阵元素的存储地址
  • D.使矩阵元素之间的逻辑关系更加复杂
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q49 原页片段

查看解析

Q50

下列关于广义表(a, (b, c), ((d, e), f))的叙述错误的是( )。

  • A.表头是 a
  • B.表尾是 f
  • C.表的长度为 3
  • D.表的深度为 3

查看解析

Q51

串'ababaaababaa'的 next 数组值为( )。

  • A.01234567899
  • B.012121111212
  • C.011234223456
  • D.0123012322345
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q51 原页片段

查看解析

Q52

串'ababaaababaa'的 next 数组为( )。

  • A.-1,0,1,2,3,4,5,6,7,8,8,8
  • B.-1,0,1,0,1,0,0,0,0,1,0,1
  • C.-1,0,0,1,2,3,1,1,2,3,4,5
  • D.-1,0,1,2,-1,0,1,2,1,1,2,3
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q52 原页片段

查看解析

Q53

串‘ ababaaababaa' 的 nextval 为( )。

  • A.0,1,0,1,1,2,0,1,0,1,0,2
  • B.0,1,0,1,1,4,1,1,0,1,0,2
  • C.0,1,0,1,0,4,2,1,0,1,0,4
  • D.0,1,1,1,0,2,1,1,0,1,0,4
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q53 原页片段

查看解析

Q54

‘aababaabac’的 nextval 数组为( )。

  • A.-1,0,1,0,1,0,1,0,1,2,3,4
  • B.-1,0,1,-1,1,-1,0,1,-1,4
  • C.-1,-1,1,-1,1,-1,-1,1,-1,4
  • D.-1,0,0,1,2,1,2,0,1,0
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q54 原页片段

查看解析

Q55

下面关于串匹配算法的叙述中,不正确的是( )。

  • A.KMP 算法的特点是在模式匹配过程中指示主串的指针不会变小
  • B.设主串长度为 n,模式串长度为 m,当 n≤m时,简单的匹配算法所花的时间代价可能会比KMP 算法少
  • C.设主串长度为 n,模式串长度为 m,则串匹配的 KMP 算法的时间复杂度为 O(m+n)
  • D.KMP 算法中,求模式串的 next 数组值时,和相匹配的主串有关
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q55 原页片段

查看解析

Q56

已知字符串 S 为"aabaacaadaafa",模式串 P 为"aada"。采用 KMP 算法结合(nextval)数组进行匹配,匹配成功时共进行( )次比较。

  • A.11
  • B.12
  • C.13
  • D.14
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q56 原页片段

查看解析

Q57

下列关于 kmp 算法的说法,错误的是( )。
I.kmp 算法的时间复杂度更优,且在主串与子串有很多“部分匹配“时效率相对于普通匹配算法才提升显著
II.kmp 主要优点是主串不需要回溯,因此 kmp 算法在每一次匹配过程中,主串指针不可能变大。
III.‘aaaa’的 next 数组为‘-1,0,2,3’
IV.失配时只需简单把子串指针 j 的值改变为 next[j]即可

  • A.I、III
  • B.II、IV
  • C.II、III、IV
  • D.III、IV
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q57 原页片段

查看解析

Q58

下列关于 next 数组和 nextval 数组的说法中,正确的是( )。

  • A.当失配发生在模式串 S 的 j 位置,当 S[j]=S[next[j]]时,下一次比较可能会比较成功
  • B.当 S[j]≠S[next[j]]时,nextval[j]和 next[j]相等
  • C.当下标从 0 开始时,nextval[0]和 nextval[1]始终为-1 和 0
  • D.当 S[j]=S[next[j]]时,nextval[j]=next[next[j]]
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q58 原页片段

查看解析

Q59

设主串 T='abaabaabacacaabaabcc',模式串 S='abaabc',采用 KMP 算法进行模式匹配,到匹配成功为止,在匹配过程中模式串右滑的总距离是( )(模式串首个字符失配计右滑 1 格)。

  • A.10
  • B.11
  • C.12
  • D.13
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q59 原页片段

查看解析

Q60

假设输入序列为 8,4,2,5,3,9,1,6,7,利用 n 个大小都为 k 的队列进行出队和入队操作,所有元素全部入队后才可以进行出队操作,得到输出序列为 1,2,3,4,5,6,7,8,9,下列说法正确的是( )。

  • A.不考虑 k 的大小,n 至少是 3
  • B.保证 k 尽可能小的情况下,n 最小为 4
  • C.保证 n 尽可能小的情况下,k 最小为 3
  • D.保证 n 尽可能小的情况下,k 最小为 4
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q60 原页片段

查看解析

Q61

3 对括号,合法的括号序列有( )种。

  • A.3
  • B.4
  • C.5
  • D.6
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q61 原页片段

查看解析

Q62

已知初始为空的队列 Q的一端仅能进行出队操作,另外一端既能进行入队操作又能进行出队操作,入队后可立马出队。若 Q 的入队序列是 1、2、3、4、5 则不能得到的出队序列是( )。

  • A.1、2、3、4、5
  • B.5、4、3、2、1
  • C.2、1、5、4、3
  • D.5、3、1、2、4
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q62 原页片段

查看解析

Q63

设主串 T="abaaabcaabaababca",模式串 S="aabaab",采用修正的 KMP 算法进行模式匹配,到匹配成功时为止,在匹配过程中进行的单个字符间的比较次数是( )。

  • A.12
  • B.13
  • C.14
  • D.15
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q63 原页片段

查看解析

Q64

下列关于队列说法中正确的有( )。
I.循环队列可以解决“假溢出”问题
II.循环队列一定是顺序存储结构
III.链式队列(单链表)队头设置在链头/链尾出队时间复杂度都是 O(1)
IV.链式队列(单链表)可以根据队尾指针和队头指针计算出队列长度

  • A.I、III
  • B.I、II
  • C.II、III
  • D.III、IV
原页版面片段(用于核对图表、公式、矩阵或代码)

第34章 Q64 原页片段 第34章 Q64 原页片段

查看解析