引言

只进行基本的四则运算,利用栈结构和后缀表达式来计算数学表达式的值。

本文代码: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处理。