一、单项选择题
01.栈的应用不包括( ).
A.递归 B.表达式求值 C.括号匹配 D.缓冲区
02.表达式a* (b+c)-d的后缀表达式是()。
A. abcd*+一 B. abc+*d- C. abc*+d- D.-+*abcd
03.下面()用到了队列。
A.括号匹配 B.表达式求值 C.递归 D.FIFO页面替换算法
04.利用栈求表达式的值时,设立运算数栈OPEN。假设OPEN只有两个存储单元,则在下
列表达式中,不会发生溢出的是().
A.A-B*(C-D) B. (A-B)*C-D C. (A-B*C)-D D. (A-B) *(C-D)
05.执行完下列语句段后,i的值为().
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、无限递归
06.设有如下递归函数,则计算F(8)需要调用该递归函数的次数为()。
int F(int n){
if (n<=3) return 1;
else return F(n-2)+F(n-4)+1;}
A.7 B.8 C.9 D.10
07.设有如下递归函数,在func(func(5))的执行过程中,第4个被执行的func函数是()
int func(int x){
if(x<=3) return 2;
else return func(x-2)+func(x-4);}
A. func(2) B. func (3) C. func (4) D. func ( 5)
08.对于一个问题的递归算法求解和其相对应的非递归算法求解,().
A.递归算法通常效率高一些 B.非递归算法通常效率高一些
C.两者相同 D.无法比较
09.执行函数时,其局部变量一般采用()进行存储。
A.树形结构 B.静态链表 C.栈结构 D.队列结构
10.执行()操作时,需要使用队列作为辅助存储空间。
A.查找散列(哈希)表 B.广度优先搜索图
C.前序(根)遍历二叉树 D.深度优先搜索图
11.下列说法中,正确的是().
A.消除递归不一定需要使用栈
B.对同一输入序列进行两组不同的合法入栈和出栈组合操作,所得的输出序列也一定相同
C.通常使用队列来处理函数或过程调用
D.队列和栈都是运算受限的线性表,只允许在表的两端进行运算
12.【2009统考真题】为解决计算机主机与打印机之间速度不匹配的问题,通常设置一个打
印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是().
A.栈 B.队列 C.树 D.图
13.【2012统考真题】已知操作符包括“+”“-”“*”“/”“(”和“)”。将中缀表达式a+b-a* ( (c+d)/e-f)+g转换为等价的后缀表达式ab+acd+e/f-*-g+时,用栈来存放暂时还不能确定运算次序的操作符。栈初始时为空时,转换过程中同时保存在栈中的操作符的最大个数是().
A. 5 B.7 C. 8 D.11
14.【2014统考真题】假设栈初始为空,将中缀表达式a/b+ (c*d-e*f)/g转换为等价的后
缀表达式的过程中,当扫描到f时,栈中的元素依次是( )。
A.+(*一 B.+(一* C./+(*一* D./+-★
15.【2015统考真题】已知程序如下:
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 ()
16.【2016统考真题】设有如下图所示的火车车轨,入口和出口之间有n条轨道,列车的行
进方向均为从左至右,列车可驶入任意一条轨道。现有编号为1~9的9列列车,驶入的次序依次是8,4,2,5,3,9,1,6,7。若期望驶出的次序依次为1~9,则n至少是( )。
A.2 B.3 C.4 D.5
17.【2017统考真题】下列关于栈的叙述中,错误的是().
I.采用非递归方式重写递归程序时必须使用栈
I.函数调用时,系统要用栈保存必要的信息
Ⅲ.只要确定了入栈次序,即可确定出栈次序
IV.栈是一种受限的线性表,允许在其两端进行操作
A.仅I B.仅I、Ⅱ、Ⅲ C.仅I、Ⅲ、IV D.仅Ⅱ、Ⅲ、IV
18.【2018统考真题】若栈s1中保存整数,栈s2中保存运算符,函数F()依次执行下述各
步操作:
1)从S1中依次弹出两个操作数a和b。
2)从S2中弹出一个运算符op。
3)执行相应的运算b op a。
4)将运算结果压入S1中。
假定S1中的操作数依次是5,8,3,2(2在栈顶),S2中的运算符依次是*、-、+(+在栈顶)。调用3次F()后,S1栈顶保存的值是().
A.-15 B.15 C.-20 D.20