中缀表达式转后缀表达式 栈
时间: 2023-10-23 07:11:35 浏览: 91
中缀表达式转后缀表达式
中缀表达式转后缀表达式可以通过使用两个栈来实现。一个栈用于存储运算符,另一个栈用于存储中间结果。
具体步骤如下:
1. 初始化两个栈,一个用于存储运算符的栈s1,一个用于存储中间结果的栈s2。
2. 从左至右扫描中缀表达式。
3. 如果扫描到操作数,直接将其压入栈s2中。
4. 如果扫描到运算符,比较其与栈s1的栈顶运算符的优先级:
- 如果栈s1为空或者栈顶运算符为左括号,则将扫描到的运算符压入栈s1中。
- 否则,如果扫描到的运算符的优先级高于栈s1的栈顶运算符,则将其压入栈s1中。
- 否则,将栈s1的栈顶运算符弹出并压入栈s2中,然后再次比较栈s1的新的栈顶运算符与扫描到的运算符的优先级。
5. 如果扫描到左括号,则直接将其压入栈s1中。
6. 如果扫描到右括号,则依次弹出栈s1的栈顶运算符并压入栈s2中,直到遇到左括号为止,最后将栈s1中的左括号丢弃。
7. 重复步骤2-6,直到扫描到中缀表达式的最右边。
8. 将栈s1中剩余的运算符依次弹出并压入栈s2中。
9. 依次弹出栈s2中的元素并输出,结果的逆序即为中缀表达式对应的后缀表达式。
阅读全文