利用栈和队列进行表达式求值 |
您所在的位置:网站首页 › 表达式求值是_______应用的一个典型例子 › 利用栈和队列进行表达式求值 |
利用栈和队列进行表达式求值
一、实验目的
深入了解栈和队列的特性,学会在实际问题下灵活运用它们。 二、问题描述表达式求值运算是实现程序设计语言的基本问题之一,也是栈应用的一个典型例子。设计并演示用算符优先级对算术表达式的求解过程。 三、实验要求1、算法优先级别如下: PC微机 DOS操作系统或 Windows 操作系统 Turbo C 程序集成环境或 Visual C++ 程序集成环境 五、实验步骤1、根据给出的算符优先级,设置运算符栈和运算数栈; 2、在读入表达式的同时,完成运算符和运算数的识别处理,并将运算数的字符序列形式转换成整数形式,并进行相应的运算; 3、调试程序,检查输出结果; 4、实验小结。 六、测试数据1.输入数据:1+(20+4)/(4-1) 正确结果:9 2.输入数据:2*9-6-(20+4)/(4-1) 正确结果:4 七、实验报告要求1、问题描述; 2、算法的设计描述; 3、测试结果的分析与讨论; 4、实现算法的程序清单,应有足够的注释。 八、程序代码 #include using namespace std; #include typedef bool status; constexpr auto ok = 1; constexpr auto error = 0; stackOperandsOriginal; stack OperatorOriginal; stackOperands; stack Operator; void Calculation(); char number(char a) { double opead = 0; opead = (opead + int(a) - 48) * 10; while (1) { cin >> a; if (a 58) { opead /= 10; OperandsOriginal.push(opead); return a; } opead = (opead + int(a) - 48) * 10; } } status Expression_input() { char a; while (1) { cin >> a; if (a > 47 && a OperatorOriginal.push(a); return 0; |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |