将中缀表达式转为后缀表达式后,利用计算机计算表达式更容易。
ExpressionCal.java 代码
运行结果如下:
- no0 stack is:
- no0 output:
- no1 stack is: (
- no1 output: 1
- no2 stack is: (
- no2 output: 1
- no3 stack is: ( +
- no3 output: 1
- no4 stack is: ( + (
- no4 output: 14
- no5 stack is: ( + (
- no5 output: 14
- no6 stack is: ( + ( -
- no6 output: 146
- no7 stack is: ( + ( -
- no7 output: 146
- no8 stack is: ( + ( - /
- no8 output: 1462
- no9 stack is: ( + ( - /
- no9 output: 1462/-
- no10 stack is: ( +
- no10 output: 1462/-+
- no11 stack is:
- no11 output: 1462/-+
- no12 stack is: *
- no12 output: 1462/-+3
- final stack is:
- after trans: 1462/-+3*
利用最后的结果1462/-+3*就比较容易用栈实现计算了,按顺序读数,数字入栈,当读到操作符后用栈顶两个数做计算,并将结果入栈,所以是1462先入栈,读到/,62出栈做6/2=3,3入栈,读到-,再43出栈做4-3=1,再1入栈,读到+,再11出栈做1+1=2,2入栈,再3入栈,读到*,23出栈做2*3=6为最后结果。
分享到:
相关推荐
算术表达式a+b*(c+d/e)转为后缀表达式后为()** - **选项分析**: - A. `ab+cde/*`:错误地将加法放在了乘法之前。 - B. `abcde/+*+`:正确的后缀表达式。 - C. `abcde/*++`:错误地先做了乘法和除法的结合,...
在中缀表达式转为逆波兰式的过程中,通常需要借助栈来完成。算法的基本步骤如下: 1. 初始化一个空栈用于存放运算符,以及一个用于输出逆波兰式的列表。 2. 从左到右扫描中缀表达式。 3. 遇到操作数时,直接将其...
第二章: 数据类型、运算符、表达式 C语言的数据类型 在第一课中,我们已经看到程序中使用的各种变量都应预先加以说明,即先说明,后使用。对变量的说明可以包括三个方面: ?数据类型 ?存储类型 ?作用域 在本课...
16. 函数调用与后缀表达式:题目中的程序在Fun函数调用时,i先自增再传递给函数,因此输出结果是21。 17. C++基础知识:C++程序不需要预处理命令#include ,而是使用#include ;主函数main()可以没有return语句,但...
14. 合并去重:可以使用set数据结构,它自动去重,如`set(list)`。 15. 随机生成验证码的两种方式:一是使用random模块生成随机数字和字符;二是使用secrets模块生成更安全的随机字符串。 16. 计算平方根:Python...
上面的语法格式中,sequence就是一个集合对象,也可以是一个表达式,但该表达式将返回一个集合对象,而item是一个任意的名字,就是被迭代输出的集合元素.此外,迭代集合对象时,还包含两个特殊的循环变量: item_index:...
此外,5.0版本还支持返回数据的方式,废除了操作前后置方法,使用beforeActionList属性定义前置操作,允许定义更复杂的控制器层次结构和访问规则。 **数据库** 数据库查询功能在5.0版本中得到增强,链式查询可以...