选择题

1. 对于栈操作数据的原则是( ) B
A. 先进先出 B. 后进先出 C. 后进后出 D. 不分顺序
2. 一个栈的输入序列为 123…n,若输出序列的第一个元素是 n,输出第 i(1<=i<=n)个元素是( ) B
A. 不确定 B. n-i+1 C. i D. n-i
3. 若一个栈的输入序列为 1,2,3,…,n,输出序列的第一个元素是 i,则第 j 个输出元素是( ) D
A. i-j-1 B. i-j C. j-i+1 D. 不确定的
4. 有六个元素 6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?( ) C
A. 5 4 3 6 1 2 B. 4 5 3 1 2 6 C. 3 4 6 5 2 1 D. 2 3 4 1 5 6
5. 设一个栈的输入序列是 1,2,3,4,5,则下列序列中,是栈的合法输出序列的是( ) D
A. 5 1 2 3 4 B. 4 5 1 3 2 C. 4 3 1 2 5 D. 3 2 1 5 4
6. 某堆栈的输入序列为 a, b,c ,d,下面的四个序列中,不可能是它的输出序列的是( ) D
A. a,c,b,d B. b, c,d,a C. c, d,b, a D. d, c,a,b
7. 输入序列为 ABC,可以变为 CBA 时,经过的栈操作为( ) B
A. push,pop,push,pop,push,pop
B. push,push,push,pop,pop,pop
C. push,push,pop,pop,push,pop
D. push,pop,push,push,pop,pop
8. 栈在( )中应用。 D
A. 递归调用 B. 子程序调用 C. 表达式求值 D. A, B, C
9. 一个递归算法必须包括( ) B
A. 递归部分 B. 终止条件和递归部分 C. 迭代部分 D.终止条件和迭代部分
10. 执行完下列语句段后,i 值为:( ) B

     int f(int x) 
     {  return  ((x>0) ? x* f(x-1):2);}
     int i  ;
     i =f(f(1));

A.2 B. 4 C. 8 D. 无限递归
11. 设计一个判别表达式中左,右括号是否配对出现的算法,采用( )数据结构最佳 D
A.线性表的顺序存储结构 B. 队列 C. 线性表的链式存储结构 D. 栈
12. 递归过程或函数调用时,处理参数及返回地址,要用一种称为( )的数据结构 C
A.队列 B.多维数组 C.栈 D. 线性表
13. 假设以数组 A[m]存放循环队列的元素,其头尾指针分别为 front 和 rear,则当前队列中的元素个数为( ) A
A.(rear-front+m)%m B.rear-front+1 C.(front-rear+m)%m D.(rear-front)%m
14. 循环队列存储在数组 A[0..m]中,则入队时的操作为( ) D
A. rear=rear+1 B. rear=(rear+1) mod (m-1)
C. rear=(rear+1) mod m D. rear=(rear+1)mod(m+1)
15. 若用一个大小为 6 的数组来实现循环队列,且当前 rear 和 front 的值分别为 0 和 3,当从队列中删除一个元素,再加入两个元素后,rear 和 front 的值分别为多少? B
A. 1 和 5 B. 2 和 4 C. 4 和 2 D. 5 和 1
16. 最大容量为 n 的循环队列,队尾指针是 rear,队头是 front,则队空的条件是 ( ) B
A. (rear+1) MOD n=front B. rear=front
C.rear+1=front D. (rear-l) MOD n=front
17. 栈和队都是( ) C
A.顺序存储的线性结构 B. 链式存储的非线性结构
C. 限制存取点的线性结构 D. 限制存取点的非线性结构
18. 设栈 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. 2