计算器表达式计算 后缀表达式+树实现 - 逆波兰表示法+调度场算法

该文章介绍如何计算包含加减乘除和括号的整数算术运算表达式,使用逆波兰表示法和表达式树的方法。程序会从标准输入读取以'='结尾的表达式,遵循整数除法规则,并展示表达式树结构。示例输入和输出展示了表达式计算的过程和结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从标准输入中读入一个整数算术运算表达式,如24 / ( 1 + 2 + 36 / 6 / 2 - 2) * ( 12 / 2 / 2 )= ,计算表达式结果,并输出。

要求:
1、表达式运算符只有+、-、*、/,表达式末尾的’=’字符表示表达式输入结束,表达式中可能会出现空格;
2、表达式中会出现圆括号,括号可能嵌套,不会出现错误的表达式;
3、出现除号/时,以整数相除进行运算,结果仍为整数,例如:5/3结果应为1。

4、要求采用表达式树来实现表达式计算。

表达式树(expression tree):

我们已经知道了在计算机中用后缀表达式和栈来计算中缀表达式的值。在计算机中还有一种方式是利用表达式树来计算表达式的值。表达式树是这样一种树,其根节点为操作符,非根节点操作数,对其进行中序遍历将计算表达式的值。由后缀表达式生成表达式树的方法如下:

l  读入一个符号:

l  如果是操作数,则建立一个单节点树并将指向他的指针推入栈中;

l  如果是运算符,就从栈中弹出指向两棵树T1和T2的指针(T1先弹出)并形成一棵新树,树根为该运算符,它的左、右子树分别指向T2和T1,然后将新树的指针压入栈中。

例如输入的后缀表达为:

    ab+cde+**

则生成的表达式树为:

 

 

 

【输入形式】

从键盘输入一个以’=’结尾的整数算术运算表达式。操作符和操作数之间可以有空格分隔。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值