栈和队列的应用相关习题及详解 ——数据结构
来源:互联网 发布:汇编怎么写网络程序 编辑:程序博客网 时间:2024/06/05 11:06
习题部分
选择题
第一题
一个问题的递归算法求解和其相对应的非递归算法求解()
A. 递归算法通常高效一些 B. 非递归算法通常高效一些
C. 两者相同 D. 无法比较
第二题
执行()操作时,需要使用队列作为辅助存储空间
A. 查找散列(哈希)表 B. 广度优先搜索图
C. 前序(根)遍历二叉树 D. 深度优先搜索图
第三题
已知操作符包括‘+’‘-’‘’‘/’‘(’‘)’ 。将中缀表达式a+b-a((c+d)/e-f)+g转化为等价的后缀表达式ab+acd+e/f-*-g+时,用栈来存放暂时还不能确定运算次序的操作符。若栈初始时为空,则转换过程中同事保存在栈中的操作符的最大个数是()
A. 5 B. 7
C. 8 D. 11
第四题
假设栈初始为空,将中缀表达式a/b+(c*d-e*f)/g转化为等价的狗追表达式的过程中,当扫描到f时,栈中的元素依次是()
A. +(*- B. +(-* C. /+(*-* D. /+-*
解答部分
第一题
通常情况下,递归算法在计算机实际执行的过程中包含很多的重复计算,所以效率会低
第二题
图的广度优先搜索类似于树的层序遍历,同样需要借助于队列
第三题
考察栈在种猪表达式转化为后缀表达式中的应用。
将中缀表达式a+b-a*((c+d)/e-f)+g转换为相应的后缀表达式,需要根据操作符<op>
的优先级来进行栈的变化,我们用icp来表示当前扫描到的运算符ch的优先级,该运算符进栈后的优先级为isp,则运算符的优先级如下表所示:
(isp)是栈内优先(in stack priority)数,icp是栈外优先(in coming priority)数。
我们在表达式后面加上‘#’,表示表达式结束,具体换换过程如下:
第四题
将中缀表达式转换后缀表达式的算法思想如下:
从左向右开始扫描中缀表达式;
遇到数字时,加入后缀表达式;
遇到运算符时:
a.若为‘(’,入栈;
b.若为‘)’,则一次把栈中的运算符加入后缀表达式中,直到出现‘(’,从栈中删除‘(’;
c.若为除括号外的其他运算符,当其优先级高于除‘(’意外的栈顶运算符时,直接入栈。否则从栈顶开始,一次弹出比当前处理的运算符优先级高和优先级相等的运算符,直到一个比它优先级低的或者遇到了一个左括号位置。
当扫描的中缀表达式结束时,栈中的所有运算符一次出栈加入后缀表达式。
由此可知,当扫描到f的时候,栈中的元素一次是+(-*
,选B。
再次再给出中缀表达式转换为前缀或后缀表达式的手工做法,以上面给出的中缀表达式为例:
第一步:按照运算符的优先级对所有的运算单位加括号
式子变成了:((a/b)+(((c*d)-(e*f)/g))
第二部:转换为前缀或后缀表达式。
前缀:把运算符号移动到对应的括号前面,则变成了:+(/(ab)/(-(*(cd)*(ef))g))
把括号去掉:+/ab/-*cd*efg
前缀式子出现
后缀:把运算符移动到对应的括号 后面,则变成了:((ab)/(((cd)*(ef)*)-g/)+
把括号去掉:ab/cd*ef*-g/+
后缀式子出现
当题目要求直接求前缀或后缀表达式时,这种方法会比上一中快捷的多。
- 栈和队列的应用相关习题及详解 ——数据结构
- 队列相关习题及详解(选择题和综合题) ——数据结构
- 栈相关习题及详解(选择题和综合题) ——数据结构
- 线性表顺序表相关习题及详解 ——数据结构
- 线性表链表表相关习题及详解(选择题) ——数据结构
- 线性表链表表相关习题及详解(综合) ——数据结构
- 数据结构习题之栈和队列
- 数据结构----栈,队列 及应用
- 数据结构----栈和队列的综合应用
- 数据结构 栈和队列的一些应用
- 数据结构----栈和队列的综合应用
- 【数据结构与算法】 队列——队列的应用举例
- 数据结构之循环队列和栈的应用
- C++_014_数据结构_队列和栈的STL应用
- 栈和队列 习题
- 三 数据结构站和队列的应用
- 【学习点滴-数据结构-栈&队列】 链式队列的实现及应用
- 数据结构——队列及循环队列
- Java获取数组组件类型及Array API简单示例
- 利用Matlab绘制图像中的某一行或者某一列的灰度曲线
- 数据库左右外连接与mapper.xml注意问题
- 0 导读
- highcharts绘制3D图表
- 栈和队列的应用相关习题及详解 ——数据结构
- 笑脸图
- SVN仓库迁移
- Android studio升级3.0,提示“Error:Cannot choose between the following configurations of project”错误
- web前端架构师的能力问题
- kafka是什么
- FastLink
- android中创建数据库
- Unity 控制台报错问题