哈工大数据结构实验:中缀转后缀表达式求值
需积分: 10 153 浏览量
更新于2024-09-11
4
收藏 62KB DOC 举报
"哈尔滨工业大学计算机科学与技术学院的数据结构与算法实验,首次实验主题为‘线性表及其应用’,具体任务是实现算符优先法对中缀表达式求值的过程,包括将其转换为后缀表达式并进行计算。实验涉及栈结构的使用,以及设计特定的函数来处理运算符的优先级和计算。实验提供了测试案例,例如1*(2.5+8.9)-1/2的处理过程。"
在本次哈工大的数据结构第一次实验中,主要关注的是中缀表达式到后缀表达式的转换以及后缀表达式的求值。这一过程涉及到计算机科学中的一个重要概念——数据结构,特别是栈的运用。栈是一种具有“后进先出”(LIFO)特性的数据结构,非常适合处理需要顺序处理的运算符和操作数的问题。
实验的目标是通过线性表来演示算符优先法对中缀表达式的求值过程。首先,用户需要从键盘输入一个语法正确的中缀表达式。然后,程序会利用栈结构将这个中缀表达式转换为后缀表达式,即所谓的逆波兰表示法。在这个转换过程中,遇到操作数时直接存入后缀表达式栈,遇到运算符则根据其优先级与栈顶运算符的关系决定是压栈还是进行运算。对于括号,开括号压栈,闭括号则触发栈中运算符的出栈,直到遇到相应的开括号为止。
实验的计算部分主要由以下几个步骤组成:
1. 遍历输入的表达式,遇到操作数时存储,遇到运算符时进行计算。
2. 使用自定义函数`ji(char c)`来比较两个运算符的优先级。
3. 函数`Cal(double num_1, double num_2, char op)`负责执行实际的计算,接收两个操作数和一个运算符作为参数,返回计算结果。
4. 函数`hou(char ch[])`用于构建并处理后缀表达式,实现从后缀表达式到计算结果的转换。
测试结果显示了中缀表达式1*(2.5+8.9)-1/2转换和计算的过程。实验通过这种方式让学生深入理解栈数据结构的应用,以及如何使用算符优先法解决表达式求值问题,这在编译原理、算法设计和计算理论等领域都有重要应用。
2022-07-11 上传
2022-05-30 上传
2010-04-25 上传
2011-11-15 上传
2010-05-05 上传
LeeYJ-cs
- 粉丝: 17
- 资源: 5
最新资源
- 平尾装配工作平台运输支撑系统设计与应用
- MAX-MIN Ant System:用MATLAB解决旅行商问题
- Flutter状态管理新秀:sealed_flutter_bloc包整合seal_unions
- Pong²开源游戏:双人对战图形化的经典竞技体验
- jQuery spriteAnimator插件:创建精灵动画的利器
- 广播媒体对象传输方法与设备的技术分析
- MATLAB HDF5数据提取工具:深层结构化数据处理
- 适用于arm64的Valgrind交叉编译包发布
- 基于canvas和Java后端的小程序“飞翔的小鸟”完整示例
- 全面升级STM32F7 Discovery LCD BSP驱动程序
- React Router v4 入门教程与示例代码解析
- 下载OpenCV各版本安装包,全面覆盖2.4至4.5
- 手写笔画分割技术的新突破:智能分割方法与装置
- 基于Koplowitz & Bruckstein算法的MATLAB周长估计方法
- Modbus4j-3.0.3版本免费下载指南
- PoqetPresenter:Sharp Zaurus上的开源OpenOffice演示查看器