栈队列数组试题(三)——栈和队列的应用

一、单项选择题
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

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值