四则运算使用栈和后缀表达式
我们在一般的四则运算都是中缀表达式。
别问我什么是中缀表达式。
我就知道符号两边是数字。也就是符号在中间。
1+3
什么是后缀表达式呢?
13+
符号在后面。
那么就有人奇怪了,为什么我要使用后缀表达式呢?
问题就是运算的时候,在编程实现的时候,后缀表达式比中缀表达式好用呗。
没事,不理解那里好用没事,我们先把中缀表达式转换成后缀表达式然后实际看看就知道了。
从左到右依次读取
运算数,输出
左括号,入栈
右括号,将栈顶的运算符并输出,直到遇到左括号
运算符
{
若优先级大于栈顶运算符,入栈
若优先级小于栈顶运算符,栈顶运算符出站并输出,再比较新的栈顶运算符,直到运算符大于栈顶运算符为止,然后这个运算符入栈
}
最后把栈全部输出
2+3*(2+3)-1
出2
出2栈+
出23栈+
出23栈+*
出23栈+*(
出232栈+*(
出232栈+*(+
出2323栈+*(+
出2323+*+栈-
出2323+*+1栈-
出2323+*+1-栈
然后利用栈来计算这个式子
栈2323
遇到+了
出来两个数,结果进去
栈235
遇到*了
出来两个,结果进去
2 15
遇到+了
出来两个数,结果进去
17
遇到1了进去
17 1
遇到-了
出来两个数,结果进去
16
就算遇到了很难的,很复杂的式子,只要利用后缀表达式就很容易了。
主要还是利用栈的特性,合理的使用数据结构是很重要的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?