比如: 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:
到此结束。