后缀表达式转中缀表达式(非常简单易懂)
介绍
最近刷题,看到了很多后缀转中缀的题目,查了一些网上的教程,在这里做了一个简单详细的说明。关于中缀转后缀请看我的另外一篇博客。
后缀转中缀
举个例子~对于后缀表达式ABCD−∗+EF/−ABCD-*+EF/-ABCD−∗+EF/−,它的中缀表达式该怎么求呢?其实很简单,下面将会一步一步讲解:
1、把后缀表达式逐个元素的压入到栈中,当压入的都是字符,则不采取任何操作,当压入的是运算符,则把运算符下面的两个数字弹出和运算符进行运算,然后把结果继续压入到栈中。
2、对后缀表达式中的所有元素执行该操作,直到结束。
对ABCD−∗+EF/−ABCD-*+EF/-ABCD−∗+EF/−来说,首先把ABCDABCDABCD逐渐压入到栈中,当再次压入−-−的时候,这时候−-−下面是CDCDCD,那么执行C−DC-DC−D,并把结果K1K_1K1压入到栈中,这时栈里有ABK1ABK_1ABK1,继续把*压入到栈中,这时有ABK1∗ABK_1*ABK1∗,此时执行操作B∗K1B*K_1B∗K1,设结果为K2K_2K2,把K2K_2K2压入到栈中,此时栈中有AK2AK_2AK2,继续向栈中压入+++,此时栈中有AK2+AK_2+AK2+,执行A+K2A+K_2A+K2,设结果为K3K_3K3,将K3K_3K3压入到栈中,此时栈中只有K3K_3K3了,继续往里压入EF/,此时栈中有K3EF/K_3EF/K3EF/,接着的操作和以上完全相同,所以最终的中缀计算过程为:
A+B∗(C−D)−E/FA+B*(C-D)-E/FA+B∗(C−D)−E/F
后缀转中缀就是这么简单~~~