gpt4 book ai didi

c - 使用栈将中缀表达式转换为前缀时,如果被扫描的和栈顶运算符的优先级相同,应该怎么办?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:17:14 26 4
gpt4 key购买 nike

此问题是在单选 MCQ 测试中提出的。扫描中缀表达式转换为前缀时,如果扫描到的运算符与栈顶运算符的优先级相同,应该如何处理?

最有意义的两个选项是:

  1. 只需将传入的运算符压入堆栈即可。
  2. 将当前运算符弹出栈顶并将其添加到转换后的表达式中,然后将传入运算符再次压入堆栈。

老师告诉我的答案是选项1,而我的答案是选项2。两种思路会产生不同的结果:

假设我们有一个中缀表达式 a * b * c。如果我们使用方法 1,它会产生前缀表达式 **abc。如果我们采用选项 2,它会产生结果 * a * bc。

那么正确的答案是什么?

(这是我用来回答这个问题的算法:http://scanftree.com/Data_Structure/infix-to-prefix 混淆是在涉及相同优先顺序的运算符的部分。)

最佳答案

这取决于运算符的结合性。一些运算符是左结合的。例如,2-3-4 应解释为 (2-3)-4,而不是 2-(3-4)。其他运算符是右结合的。例如,在 C 中,x=y=z 应该解释为 x=(y=z),而不是 (x=y)=z。

关于c - 使用栈将中缀表达式转换为前缀时,如果被扫描的和栈顶运算符的优先级相同,应该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39619603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com