中缀表达式“9+(3-1)*3+10/2”转化为后缀表达式“9 3 1-3*+ 10 2/+”
中缀表达式转后缀表达式的方法: 1.遇到操作数:直接输出(添加到后缀表达式中) 2.栈为空时,遇到运算符,直接入栈 3.遇到左括号:将其入栈 4.遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左括号不输出。 5.遇到其他运算符:加减乘除:弹出所有优先级大于或者等于该运算符的栈顶元素,然后将该运算符入栈 6.最终将栈中的元素依次出栈,输出。
实现9+(3-1)*3+10/2,栈=空 1.9输出 表达式=9 栈=空 2.+入栈 表达式=9 栈=+ 3.(入栈 表达式=9 栈=+( 4.3输出 表达式=9 3 栈=+( 5.-入栈 表达式=9 3 栈=+(- 6.1输出 表达式=9 3 1 栈=+( - 7.)比较栈顶 表达式=9 3 1 - 栈=+ 8.*入栈 表达式=9 3 1 - 栈=+* 9.输出, 表达式=9 3 1 - 3 栈=+* 10.+比较栈顶 表达式=9 3 1 - 3 * + 栈=+ 11.10输出 表达式=9 3 1 - 3 * + 10 栈=+ 12./入栈 表达式=9 3 1 - 3 * + 10 栈=+ / 13.2输出 表达式=9 3 1 - 3 * + 10 2 栈=+ / 14.栈清空 表达式=9 3 1 - 3 * + 10 2 / + 栈=空