【发布时间】:2020-02-05 17:24:12
【问题描述】:
我目前正在尝试在不导入 java.util.* 的情况下创建自己的堆栈。我只被允许使用数组和循环将我的中缀表达式转换为后缀,以便它在计算器中工作。我已经可以将中缀拆分为术语,但找不到任何解释如何解决此问题的文章。 提前谢谢!
【问题讨论】:
-
您能进一步描述您的问题吗?也许添加一些代码或伪代码来解释你的想法?
-
你试过什么?一般的想法是创建一个数组并在任何堆栈操作之后跟踪堆栈的顶部,如果需要,可能会“增长”堆栈的数组。
-
实际上这听起来像是一次有两个问题。首先你需要用一个简单的数组创建你的“堆栈”。例如,您可以创建一个带有数组的类
StackArray来支持您的元素。然后,您需要 Stack 通常具有的方法(push、pop、peek...)。一旦你有了你的堆栈实现,你就可以分析你的中缀后缀问题。我的建议:在纸上做。一旦你拆分了你的表达式(读作“中缀”),你需要以正确的顺序将“术语”添加到你的堆栈中。如果你有arr=['a', '+', 'b']你有:stack.put(arr[0]); stack.put(arr[2]);stack.put(arr[1]); -
问题是我理解了调车场算法的原理,但是我不知道如何将它实现到我的代码中。现在我创建了一个包含 public boolean isEmpty()、public String pop() 和 public String push() 的新类,我将用它来替换堆栈函数
-
不确定,可能是Shunting-yard algorithm 或那里链接的一些算法(巧合的是我上周尝试过,但肯定使用过
java.util)