引言
只进行基本的四则运算,利用栈结构和后缀表达式来计算数学表达式的值。
本文代码:GitHub
运行效果:
问题
如果只能进行两个值的加减乘除,如何编程计算一个数学表达式的值?
1+2*3+(4*5+6)*7()* /+ -1+6+26*7 = 189
中缀、后缀表达式的计算
人利用中缀表达式计算值
1+2*3+(4*5+6)*712+3(4*5+6)*7
计算机利用后缀表达式计算值
1+2*3+(4*5+6)*7123*+45*6+7*+
计算后缀表达式的代码实现
现在只需知道如何将中缀转为后缀,再利用栈计算即可。
中缀表达式转后缀表达式
转换过程
从左到右逐个字符遍历中缀表达式,输出的字符序列即是后缀表达式:
遇到数字直接输出
遇到运算符则判断:
())
转换的代码实现
总结
计算机计算数学表达式的值分成了 2 步,利用 stack 将人理解的中缀表达式转为计算机理解的后缀表达式,再次利用 stack 计算后缀表达式的值。
版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。