算术表达式转后缀表达式的栈实现程序

 时间:2024-10-30 07:32:53

1、首先我们要知道什么式后缀表达式,后缀表达式指的式将运算符写在操作数之后。例如:3*(2-(5+1)),表示为:3 2 5 1 + - *,也就是把操作运算符往操作数后面放。而中缀表达式就是我们平时正常写的算术表达式。

算术表达式转后缀表达式的栈实现程序

2、下面小编用栈的方式来实现该算法,我们先要注意两种情况,第一种是没有括号的情况,如:1+2+3.我们设置原本的算术表达式存在exp中,将结果存在postexp中。从exp扫描,发现1为数字,则数字1存到postexp中,然后+入栈,对于数字2同理。然后扫描到第二个+的时候,它俩的优先级相同,先进栈的那个加号退栈到postexp中,这个时候为“12+”,然后循环执行下去,exp扫描完毕以后,所有运算符退栈,得到结果为“12+3+”。

算术表达式转后缀表达式的栈实现程序

3、然后是情况二为带括号的情况,例如:“2*(1+3)-4”。一开始的时候,任何运算符都进栈,此时*进栈。然后左括号为一个表达式的开始,进栈。此时栈顶为左括号,任何运算符都可以进栈,所以+进栈。然后是右括号,代表一个表达式的结束,从它退栈到左括号。最终得到“213+*4-”。

算术表达式转后缀表达式的栈实现程序

4、分析完两种情况以后,下面我们来看一段伪代码,只有从伪代码入手我们才能够更好地理解该算法。注意ch为exp中的字符,Optr为运算符栈指针。

算术表达式转后缀表达式的栈实现程序

5、最后小编给大家放上完整的程序以及最后的运行结果,以供大家参考。最后祝大家学习愉快!

算术表达式转后缀表达式的栈实现程序
算术表达式转后缀表达式的栈实现程序
算术表达式转后缀表达式的栈实现程序
算术表达式转后缀表达式的栈实现程序
  • 使用Windows 2000 Server如何更改文件的所有者
  • 虚拟机如何启动时自动连接CD/DVD
  • 为文档设置权限密码保护
  • VSCode怎么添加本地GIT储存库
  • 如何区别网上提供的电影版本
  • 热门搜索
    阅读手抄报图片大全 抗击疫情手抄报内容 廉政手抄报 我爱家乡手抄报 节能减排手抄报 关于英雄的手抄报 网络安全手抄报简单漂亮 语文手抄报图片 节约粮食的手抄报 新学期手抄报