过程
- 将操作数压入操作数栈;
- 将运算符压入运算符栈;
- 忽略左括号;
- 在遇到右括号时,弹出一个运算符,弹出所需数量的操作数,并将运算符和操作
数的运算结果压入操作数栈。
举例分析
计算(1+((2+3)*(4*5)))
ops—运算符栈
vals—操作数栈
依次读取输入的字符压入栈中
遇到“)”,进行弹栈操作
计算:v=2+3=5;将运算符和操作数的运算结果压入操作数栈
继续读取进行压栈操作
遇到“)”,进行弹栈操作
计算:v=4*5=20;将运算符和操作数的运算结果压入操作数栈
遇到“)”,进行弹栈操作
计算:v=5*20=100;
- 将运算符和操作数的运算结果压入操作数栈
- 遇到“)”,进行弹栈操作
计算:1+100=101;
- 将运算符和操作数的运算结果压入操作数栈