第一章 单元测试

1、单选题:
若让元素1,2,3,4,5依次进栈,则出栈次序不可能出现在()种情况。
选项:
A:5,4,3,2,1
B:2,1,5,4,3
C:4,3,1,2,5
D:2,3,5,4,1
答案: 【4,3,1,2,5

2、单选题:
若已知一个栈的入栈序列是1,2,3,…,m,其输出序列为p,P2,p,…,pn,若p1=n,则p为()
选项:
A:i
B:n-1
C:n-i+1
D:不确定
答案: 【n-i+1

3、单选题:
数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素个数的公式为()
选项:
A: r-f
B:(n+f-r)%1
C:n+r-f
D:(n+f-r)%n
答案: 【(n+f-r)%n

4、单选题:
链式栈结点为(data,link),top指向栈顶,若想删除栈顶结点,并将删除结点的值保存到x中,则应执行操作()
选项:
A:x-top->data; top=top->link;
B:top=top->link; x-top->link;
C:x=top: top=top->link
D:x=top->link;
答案: 【x-top->data; top=top->link;

第二章 单元测试

1、单选题:
为解决计算机主机与打印机间速度不匹配问题,通常设一个打印数据缓冲区。主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是()
选项:
A:队列
B:栈
C:线性表
D:有序表
答案: 【队列

2、单选题:
设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次进入栈S,一个元素出后即进入Q,若6个元素出队的序列是e2,e4,e3,c6,e5和el,则栈S的容量至少应该是()。
选项:
A:2
B:3
C:4
D:6
答案: 【3

3、单选题:
若一个栈以向量V[1,…,n]存储,初始栈顶指针top设为n+1,则元素x进栈的正确操作是()
选项:
A:top++,V[top]=x;
B:V[top]=x;top++;
C:top--,V[top]=x;
D:V[top]=x;top--;
答案: 【top--,V[top]=x;

4、单选题:
设计一个判别表达式中左、右括号是否配对出现的算法,采用()数据结构最佳。
选项:
A:线性表的顺序存储结构
B:队列
C:线性表的链式存储结构
D:栈
答案: 【

5、单选题:
用链接方式存储的队列,在进行删除运算时()
选项:
A:仅修改头指针
B:仅修改尾指针
C:头、尾指针都要修改
D:头、尾指针可能都要修改
答案: 【头、尾指针可能都要修改

6、单选题:
循环队列存储在数组A[0,…,m]中,则人队时的操作为()
选项:
A:rear=rear+1
B:rear=(rear+1)%(m-1)
C:rear(rear+1)%m
D:rear(rear+1)%(m+1)
答案: 【rear(rear+1)%(m+1)

7、单选题:
最大容量为n的循环队列,队尾指针是rear,队头是 front,则队空的条件是()
选项:
A:(rear+1)%n=front
B:rear==front
C:rear+1==front
D:(rear-)%n==front
答案: 【rear==front

8、单选题:
栈和队列的共同点是()。
选项:
A:都是先进先出
B:都是先进后出
C:只允许在端点处插入和删除元素
D:没有共同点
答案: 【只允许在端点处插入和删除元素

9、单选题:
一个递归算法必须包括()
选项:
A:递归部分
B:终止条件和递归部分
C:选代部分
D:终止条件和迭代部分
答案: 【终止条件和递归部分

10、单选题:
设栈S和队列Q的初始状态均为空,元素a,b,c,d,e,f,g依次进入栈S。若每个元素出栈后立即进入队列Q,且7个元素出队的顺序是b,d,c,f,e,a,g,则栈S的容量至少是()
选项:
A:1
B:2
C:3
D:4
答案: 【3

11、单选题:
若元素a,b,c,d,e,f依次进栈,允许进栈、退栈操作交替进行,但不允许连续三次进行退栈工作,则不可能得到的出栈序列是()
选项:
A:d, c, e, b, f, a
B:c, b, d, a, e, f
C:b, c, a, e, f, d
D:a, f, e, d, c, b
答案: 【a, f, e, d, c, b

12、单选题:
某队列允许在其两端进行入队操作,但仅允许在素a,b,c,d,e依次入此队列后再进行出队操作,则不可能得到的出对序列是()
选项:
A:b,a,c,d,e
B:d,b,a,c,e
C:d,b,c,a,e
D:e,c,b,a,d
答案: 【d,b,c,a,e

13、单选题:
元素a,b,c,d,e依次进入初始为空的栈中,若元素进栈后可停留、可出栈,直到所有元素都出栈,则在所有可能的出栈序列中,以元素d开头的序列个数是()
选项:
A:3
B:4
C:5
D:6
答案: 【4

14、单选题:
已知循环队列存储在一维数组A[0...n-1]中,且队列非空时font和rear分别指向队头元素和队尾元素。若初始时队列为空,且要求第1个进入队列的元素存储在A[O]处,则初始时 front和rear的值分别是()
选项:
A:0,0
B:0,n-1
C:n-1,0
D:n-1,n-1
答案: 【0,n-1

15、单选题:
操作符包括‘+’‘-’‘*’‘/’和‘(',‘)’。将中缀表达式a+b-a*((c+d)/e-f)+g转换为等价的后级表达式ab+acd+e/f-*-g+时,用栈来存放暂时还不能确定运算次序的操作符,若栈初始时为空,则转换过程中同时保存在栈中的操作符的最大个数是()
选项:
A:5
B:7
C:8
D:11
答案: 【5

16、单选题:
一个栈的入栈序列为1,2,3,…,n,其出栈序列是p1,p2,p3...pn。若p2=3,则p3可能取值的个数是()
选项:
A:n-3
B:n-2
C:n-1
D:无法确定
答案: 【n-1

17、单选题:
假设栈初始为空,将中缀表达式a/b+(c*d-e*f)/g转换为等价的后缀表达式的过程中,当扫描到f时,栈中的元素依次是()
选项:
A:+(*-
B:+(-*
C:/+(*-*
D:/+-*
答案: 【+(-*

18、单选题:
循环队列放在一维数组A[0...M-1]中,endl指向队头元素,end2指向队尾的后一个位置。假设队列两端均可进行入队和出队操作,队列中最多能容纳M1个元素。初始时为空。下列判断队空和队满的条件中,正确的是()
选项:
A:队空:endl==end2;队满:cndl==(end2+1)mod M
B:队空:endl==end;队满:end==(end1+1)mod(M-1)
C:队空:end2==(end+1)modM;队满:endl==(end2+1)mod M
D:队空:end==(end2+1)modM;队满:end2==(endl+1)mod(M-1)
答案: 【队空:endl==end2;队满:cndl==(end2+1)mod M

19、单选题:
已知程序如下int S(int n){return(n<=0)?0:s(n-1)+n;}void main{cout<< s(1);}程序运行时使用栈来保存调用过程的信息,自栈底到栈顶保存的信息一次对应的是()

选项:
A:main()->S(1)->S(0)
B:S(0)->S(1)->main()
C:main()->S(0)->S(1)
D:S(1)->S(0)->main()
答案: 【main()->S(1)->S(0)

20、单选题:
若一个栈的输入序列为1,2,3,…,n,输出序列的第一个元素是i,则第j个输出元素是
选项:
A:i-j-1
B:i-j
C:j-i+1
D:不确定的
答案: 【不确定的

发表评论

电子邮件地址不会被公开。 必填项已用*标注