1.算术表达式(a+a*b)*a+c*b/a的后缀表达式是______。
A、a a b * + a * c b * a / +
B、a a * b + a * c b * a / +
C、a a b * a * c b * + a / +
D、a a b * + a c b * a / + *
答案:['a a b * + a * c b * a / +']
2.将算术表达式“1+6/(8-5)*3”转换成后缀表达式,在求后缀表达式的过程中,当遇到'*'时,运算数栈(从栈顶到栈底次序)为______。
A、8 6 1
B、5 8 1
C、3 2 1
D、3 6 1
答案:['3 2 1']
3.当用一个数组data[0..n-1]存放栈中元素时,栈底最好______。
A、设置在data[0]处
B、设置在data[n-1]处
C、设置在data[0]或data[n-1]处
D、设置在data数组的任何位置
答案:['设置在data[0]或data[n-1]处']
4.若一个栈元素用数组data[1..n]存储,初始栈顶指针top为n,则以下元素x进栈最适合的操作是______。
A、top++; data[top]=x;
B、data[top]=x; top++;
C、top--; data[top]=x;
D、data[top]=x; top--;
答案:['data[top]=x; top--;']
5.若一个栈元素用数组data[1..n]存储,初始栈顶指针top为n,则以下出栈元素x最适合的操作是______。
A、x=data[top]; top++;
B、top++; x=data[top];
C、x=data[top]=x; top--;
D、top--; x=data[top];
答案:['top++; x=data[top];']
6.若一个栈元素用数组data[1..n]存储,初始栈顶指针top为0,则以下元素x进栈最适合的操作是______。
A、top++; data[top]=x;
B、data[top]=x; top++;
C、top--; data[top]=x;
D、data[top]=x; top--;
答案:['top++; data[top]=x;']
7.若一个栈元素用数组data[1..n]存储,初始栈顶指针top为0,则以下出栈元素x最适合的操作是______。
A、x=data[top]; top--;
B、x=data[top]; top++;
C、top--; x=data[top];
D、top++; x=data[top];;
答案:['x=data[top]; top--;']
8.有关链栈的叙述中正确的是______。
A、链栈在进栈操作时一般不需要考虑上溢出
B、链栈在出栈操作时一般不需要考虑下溢出
C、链栈和顺序栈相比的缺点是不能随机访问栈中元素
D、以上都不对
答案:['链栈在进栈操作时一般不需要考虑上溢出']
9.以下各链表均不带有头结点,其中最不适合用作链栈的链表是______。
A、只有表头指针没有表尾指针的循环双链表
B、只有表尾指针没有表头指针的循环双链表
C、只有表尾指针没有表头指针的循环单链表
D、只有表头指针没有表尾指针的循环单链表
答案:['只有表头指针没有表尾指针的循环单链表']
10.栈和队列的共同点是______。
A、都是先进后出
B、都是后进先出
C、只允许在端点处插入和删除元素
D、没有共同点
答案:['只允许在端点处插入和删除元素']
11.栈和队列的不同点是______。
A、都是线性表
B、都不是线性表
C、栈只能在同一端进行插入删除操作,而队列在不同端进行插入删除操作
D、没有不同点
答案:['栈只能在同一端进行插入删除操作,而队列在不同端进行插入删除操作']
12.循环队列______。
A、不会产生下溢出
B、不会产生上溢出
C、不会产生假溢出
D、以上都不对
答案:['不会产生假溢出']
13.某循环队列的元素类型为char,队头指针front指向队头元素的前一个位置,队尾指针rear指向队尾元素,如下图所示,则队中从队头到队尾的元素为______。
A、abcd123456
B、abcd123456c
C、dfgbca
D、cdfgbca
答案:['dfgbca']
14.若某循环队列有队首指针front和队尾指针rear,在队不空时出队操作仅会改变______。
A、front
B、rear
C、front和rear
D、以上都不队
答案:['front']
15.若某循环队列有队头指针front和队尾指针rear,在队不满时进队操作仅会改变______。
A、front
B、rear
C、front和rear
D、以上都不对
答案:['rear']
16.已知循环队列存储在一维数组A[0..n-1]中,且队列非空时front和rear分别指向队头元素和队尾元素。若初始时队列空,且要求第一个进入队列的元素存储在A[0]处,则初始时front和rear的值分别是______。
A、0,0
B、0,n-1
C、n-1,0
D、n-1,n-1
答案:['0,n-1']
18.设循环队列qu中数组data的下标是0~N-1,其队头、队尾指针分别为f和r(f指向队首元素的前一位置,r指向队尾元素),元素x出队的操作是______ ; x=qu.data[qu.f]。
A、qu.r++
B、qu.r=(qu.r+1)%N
C、qu.f++;
D、qu.f=(qu.f+1)%N
答案:['qu.f=(qu.f+1)%N']
19.设固定容量的循环队列中数组的下标是0~N-1,其队头队尾指针分别为f和r(f指向队首元素的前一位置,r指向队尾元素),则其元素个数为______。
A、r-f
B、r-f-1
C、(r-f)%N+1
D、(r-f+N)%N
答案:['(r-f+N)%N']
20.设固定容量的循环队列的存储空间为a[0..20],且当前队头指针和队尾指针的值分别为8和3,则该队列中元素个数为______。
A、5
B、6
C、16
D、17
答案:['16']
21.若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再进队两个元素后,rear和front的值分别为______。
A、1和5
B、2和4
C、4和2
D、5和1
答案:['2和4']
22.假设用一个不带头结点的单链表表示队列,队尾在链表的______ 位置。
A、链头
B、链尾
C、链中
D、以上都可以
答案:['链尾']
23.最不适合用做链队的链表是______。
A、只带头结点指针的非循环双链表
B、只带队首结点指针的循环双链表
C、只带队尾结点指针的循环双链表
D、以上都不适合
答案:['只带头结点指针的非循环双链表']
24.串是一种特殊的线性表,其特殊性体现在______。
A、可以顺序存储
B、数据元素是单个字符
C、可以链式存储
D、数据元素可以是多个字符
答案:['数据元素是单个字符']
25.以下______ 是“abcd321ABCD”串的子串。
A、abcd
B、321AB
C、“abcABC”
D、“21AB”;
答案:["21AB""]
26.对于一个链串s,查找第一个值为x元素的算法的时间复杂度为______。
A、O(1)
B、O(n)
C、O(n2)
D、以上都不对
答案:['O(n)']
27.对于一个链串s,查找第i个元素的算法的时间复杂度为______。
A、O(1)
B、O(n)
C、O(n2)
D、以上都不对
答案:['O(n)']
28.设有两个串s和t,求t在s中首次出现的位置的运算称作______。
A、连接
B、模式匹配
C、求子串
D、求串长
答案:['模式匹配']
29.已知t="abcaabbcabcaabdab",该模式串的next数组值为______。
A、-1,0,0,0,1,1,2,0,0,1,2,3,4,5,6,0,1
B、0,1,0,0,1,1,2,0,0,1,2,3,4,5,6,0,1
C、-1,0,0,0,1,1,2,0,0,1,2,3,4,5,6,7,1
D、-1,0,0,0,1,1,2,3,0,1,2,3,4,5,6,0,1
答案:['-1,0,0,0,1,1,2,0,0,1,2,3,4,5,6,0,1']
30.已知t="abcaabbcabcaabdab",该模式串的nextval数组为______。
A、-1,0,0,0,1,1,2,0,0,1,2,3,4,5,6,0,1
B、-1,0,0,-1,1,0,2,0,-1,0,0,-1,1,0,2,-1,0
C、-1,-1,-1,-1,1,0,2,0,-1,0,0,-1,1,0,2,-1,0
D、-1,0,0,-1,1,0,-1,0,-1,0,0,-1,1,0,-1,-1,0
答案:['-1,0,0,-1,1,0,2,0,-1,0,0,-1,1,0,2,-1,0']
31.设目标串为s,模式串为是t,在KMP算法中,next[4]=2的含义是______。
A、表示目标串匹配失败的位置是i=4
B、表示模式串匹配失败的位置是j=2
C、表示t4字符前面最多有2个字符和开头的2个字符相同
D、表示s4字符前面最多有2个字符和开头的2个字符相同
答案:['表示t4字符前面最多有2个字符和开头的2个字符相同']
32.在KMP算法中,next[j]=-1的含义是______。
A、表示j=-1
B、表示下一趟从j=0位置开始比较
C、表示两字符比较相等
D、表示两串匹配成功
答案:['表示下一趟从j=0位置开始比较']
33.在BF算法中,当模式串位j与目标串位i比较时,两字符不相等,则i的位移方式是______。
A、i++
B、i=j+1
C、i=i-j+1
D、i=j-i+1
答案:['i=i-j+1']
34.在BF算法中,当模式串位j与目标串位i比较时,两字符不相等,则j的位移方式是______。
A、j++
B、j=0
C、j=i-j+1
D、j=j-i+1
答案:['j=0']
35.在KMP算法中,已经求出next数组。当模式串位j与目标串位i比较时,两字符不相等,则i的位移方式是______。
A、i=next[j]
B、i不变
C、j不变
D、j=next[j]
答案:['i不变']
36.在KMP算法中,已经求出next数组。当模式串位j与目标串位i比较时,两字符不相等,则j的位移方式是______。
A、i=next[j]
B、i不变
C、j不变
D、j=next[j]
答案:['j=next[j]']
37.在KMP算法中,已经求出next数组。当模式串位j与目标串位i比较时,两字符相等时,则i的位移方式是______。
A、i++
B、i=j+1
C、i=i-j+1
D、i=j-i+1
答案:['i++']
38.在KMP算法中,已经求出next数组。当模式串位j与目标串i比较时,两字符相等时,则j的位移方式是______。
A、j++
B、j不变
C、j=i-j+1
D、j=0
答案:['j++']
39.递归模型如下:
f(1)=1
f(n)=f(n-1)+n n>1
其中递归出口是______。
A、f(1)=0
B、f(1)=1
C、f(0)=1
D、f(n)=n
答案:['f(1)=1']
40.函数f(x,y)定义如下:
f(n)=f(n-1)+f(n-2)+1 n>1
f(n)=1 n<=1
则f(5)的值是______。
A、10
B、15
C、16
D、20
答案:['15']
41.将递归算法转换成非递归算法时,通常要借助的数据结构是______。
A、线性表
B、栈
C、队列
D、树
答案:['栈']
42.函数f(x,y)定义如下:
f(x,y)=f(x-1,y)+f(x,y-1) 当x>0且y>0
f(x,y)=x+y 否则
则f(2,1)的值是______。
A、1 B、2 C、3 D、4
答案:['4']
43.某递归算法的执行时间的递推关系如下:
T(n)=1 当n=1时
T(n)=2T(n/2)+1 当n>1时
则该算法的时间复杂度为______。
A、O(1)
B、O(log2n)
C、O(n)
D、O(nlog2n)
答案:['O(n)']