前缀表达式求值
中缀转前缀
- 初始化两个栈:运算符栈s1 , 储存中间结果的栈s2
- 从右往左扫描
- 遇到操作数压入s2
- 遇到运算符,与s1栈顶运算符比较优先级
- 如果s1为空,或栈顶运算符为 ")" ,入栈
- 优先级比栈顶运算符高或者相等,入栈s1
- 否则,s1栈顶运算符弹出并压入s2
- 遇到括号时
- ")",入栈s1
- "(",依次弹出s1栈顶的运算符,压入s2,直到遇到")",丢弃括号
- 重复,将s1剩余的运算符依次弹出并压入s2
- 依次弹出s2中的元素并输出
后缀表达式求值
中缀转后缀
- 初始化两个栈:运算符栈1,储存中间结果的栈s2
- 从左往右扫描中缀表达式s
- 遇到操作数压入s2
- 遇到运算符时,比较其与s1栈顶运算符的优先级
- 如果s1为空,或栈顶运算符为“(”,入栈
- 优先级比栈顶运算符高(没有相等),入栈s1
- 否则,s1栈顶运算符弹出并压入s2
- 遇到括号时
- "(",入栈
- ")",依次弹出s1栈顶的运算符,压入s2,直到遇到")",丢弃括号
- 重复,将s1剩余的运算符依次弹出并压入s2
- 依次弹出s2中的元素并输出
posted @
2022-09-08 17:43
你在学什么
阅读(
140)
评论()
收藏
举报