前缀,中缀,后缀表达式

前缀表达式求值

  • 从右往左,遇到数字压入栈,遇到运算符出栈

中缀转前缀

  1. 初始化两个栈:运算符栈s1 , 储存中间结果的栈s2
  2. 从右往左扫描
  3. 遇到操作数压入s2
  4. 遇到运算符,与s1栈顶运算符比较优先级
    • 如果s1为空,或栈顶运算符为 ")" ,入栈
    • 优先级比栈顶运算符高或者相等,入栈s1
    • 否则,s1栈顶运算符弹出并压入s2
  5. 遇到括号时
    • ")",入栈s1
    • "(",依次弹出s1栈顶的运算符,压入s2,直到遇到")",丢弃括号
  6. 重复,将s1剩余的运算符依次弹出并压入s2
  7. 依次弹出s2中的元素并输出

后缀表达式求值

  • 从左往右,遇到数字压入栈,遇到运算符出栈

中缀转后缀

  1. 初始化两个栈:运算符栈1,储存中间结果的栈s2
  2. 从左往右扫描中缀表达式s
  3. 遇到操作数压入s2
  4. 遇到运算符时,比较其与s1栈顶运算符的优先级
    • 如果s1为空,或栈顶运算符为“(”,入栈
      • 优先级比栈顶运算符高(没有相等),入栈s1
      • 否则,s1栈顶运算符弹出并压入s2
  5. 遇到括号时
    • "(",入栈
    • ")",依次弹出s1栈顶的运算符,压入s2,直到遇到")",丢弃括号
  6. 重复,将s1剩余的运算符依次弹出并压入s2
  7. 依次弹出s2中的元素并输出
posted @   你在学什么  阅读(116)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示