gpt4 book ai didi

Java:评估后缀表达式

转载 作者:行者123 更新时间:2023-12-01 13:10:08 25 4
gpt4 key购买 nike

这是理论上的:

我必须评估一个已经从中缀转换为后缀的表达式。后缀保存在队列中,因为我想避免使用字符串。这样我就知道数字之间的划分在哪里,并且可以按“正确”的顺序访问它。

看起来像这样:

// Original expression: 2+(3+1)-(5-3)^2*3-1
Queue: [2.0, 3.0, 1.0, +, +, 5.0, 3.0, -, 2.0, ^, 3.0, *, -,1.0, -]

现在我想使用两个堆栈:

  • 原始堆栈(已预先填充队列内容)
  • 和目标堆栈

将后缀表达式从一个传递到另一个,同时询问当前元素是否为数字或运算符并计算连续数字。

如果我到达一个运算符并且数字计数至少为 2,我将执行该操作并将其插入目标堆栈。到达原始堆栈的末尾(现在为空)时,我会将所有内容传递回它并重新开始,直到只剩下结果。

我现在问我:

  • 这是一种好方法还是我应该尝试检测 NumberNumberOperator 类型的所有模式并一次性处理它们?
  • 如果第二种选择是可行的方法,那么该怎么做?

最佳答案

没有。您只需要一叠,完成后就没有什么可以“从头开始”了。

当您使数字出列时,将其压入:当您使运算符出列时,弹出两个值,用这两个操作数计算该运算符,然后压入结果。当到达输入末尾时,堆栈中应该只有一个值,即结果。否则输入的格式不正确。

关于Java:评估后缀表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22943605/

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