You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

中缀转前缀表达式的栈/输入优先级表错误修正请求

优先级表修正方案

问题定位

错误结果-*+abc-de+fg^表明幂运算符^被判定为最低优先级,最后才从栈中弹出,而正确逻辑里^是整个表达式的最外层运算符(优先级最高),应当最先被处理。

修正后的优先级数值

针对核心运算符及括号,调整栈优先级(Stack Precedence, sp)与输入优先级(Input Precedence, ip)如下:

  • 幂运算符^:
    • 输入优先级(ip):5(高于所有算术运算符)
    • 栈优先级(sp):4(适配幂运算右结合特性,确保连续幂运算时右侧运算符优先入栈)
  • 乘/除运算符*、/:
    • 输入优先级(ip):3
    • 栈优先级(sp):3
  • 加/减运算符+、-:
    • 输入优先级(ip):1
    • 栈优先级(sp):2
  • 左括号(:
    • 输入优先级(ip):6(确保能直接压入栈)
    • 栈优先级(sp):0(遇到右括号时触发弹出直到左括号)
  • 右括号):
    • 输入优先级(ip):0(触发弹出栈顶运算符直到匹配左括号)

验证逻辑

用修正后的优先级表处理目标中缀表达式(((a+b)*c-(d-e))^(f+g)):

  1. 按中缀转前缀的标准逻辑(从右往左扫描表达式,或反转表达式后从左往右处理)
  2. 当扫描到^时,其输入优先级(5)高于栈顶-的栈优先级(2),会先弹出所有栈中优先级低于5的运算符(-、*、+等),再将^压入栈
  3. 最终栈弹出顺序为^、-、*、+、-、+,结合操作数后生成预期前缀表达式^-*+abc-de+fg

内容的提问来源于stack exchange,提问作者user23435187

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 03:55:05