- 将表达式转换成列表
- 建立两个列表,一个存放操作符(stackOpt),一个存放已经遍历过得字符(stackPut)
*使用右向左遍历temp,if temp == ‘)’,则temp加入操作符栈stackOpt,if temp == 数字,则temp加入stackPut; - if temp == 左括号'(’,则从循环从操作符栈stackOpt弹出操作符并加入stackPut,直到弹出右括号'')";右括号不加入stackOpt;
- if temp in [+、-、*、],若stackOpt的栈顶为操作符,且运算优先级高于此时temp,则将stackOpt的栈顶元素弹出加入stackPut,否则,将temp加入stackPut
- 遍历结束后,将stackPut逆序输出,即为前缀表达式。
网友评论