由中缀式转化为后缀式

比如: 10+(18+9*3)/ 15 - 6

步骤如下:

  首先初始化两个栈,S1,S2;S1存操作数,S2存运算符,然后从左到右扫描,

  1.遇到( ,直接进栈 ,遇到 ) 时,把S2中的操作数一直到 ( 之前 ,都存入 S1,

  2. 遇到 + — * / 时,如果当前的算符优先级小于S2中的优先级的话,就压入S1中

  S1:10 18  9  3

  S2:+ (  +  *

  这时遇到右括号:

  S1:10 18 9 3 * +

  S2:+ 

  S1:10 18 9 3 * + 15 

  s2:+  /

  S1:10 18 9 3 * + 15 / +6

  S2:—  

  

  S1:10 18 9 3 * + 15 / + 6 —

  S2:

到此结束。

原文地址:https://www.cnblogs.com/zhanglanyun/p/2665946.html