这是一个理论上的:
我必须评估一个已经从 infix 转换为 postfix 的表达式。后缀保存在Queue
内,因为我想避免使用String
。这样我知道数字之间的分歧在哪里,我可以在"右边"顺序。
看起来像这样:
// 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
类型的所有模式并一次处理它们?答案 0 :(得分:1)
没有。你只需要一个堆叠,当你完成任务时,没有什么可以从全部开始了#39;用。
当你将一个数字出列时,按下它:当你使一个操作符出列时,弹出两个值,用这两个操作数计算运算符,然后推送结果。到达输入的末尾时,堆栈中应该只有一个值,即结果。否则输入结果不合理。