多语言展示
当前在线:615今日阅读:126今日分享:42

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

现在有很多小伙伴都在学习C语言和数据结构。数据结构与算法中有一个关于编写算术表达式转后缀表达式的题目,这道题我们该怎么做呢?今天就让小编来帮助大家一起来解决这个问题吧!
工具/原料
1

后缀表达式的理解

2

正确的思路

方法/步骤
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

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

注意事项
1

原创不易,禁止转载,违者必究!

2

喜欢请点赞!

推荐信息