中缀到后缀转换器中的堆栈问题

时间:2013-07-14 06:37:26

标签: java stack postfix-notation infix-notation

美好的一天!我正在使用堆栈实现一个使用postix转换器的中缀。当用户输入没有括号的中缀表达式时,它可以工作;但是当存在括号时,控制台会说:

Exception in thread "main" StackEmptyException: Stack is empty.
    at ArrayStack.top(ArrayStack.java:85)
    at InfixToPostfix.convert(InfixToPostfix.java:54)
    at InfixToPostfix.main(InfixToPostfix.java:85)


我的问题在于实现排名(堆栈顶部)。

1 个答案:

答案 0 :(得分:0)

啊哈!比较最顶层的等级时你需要“堆栈偷看”因为“顶部”必须弹出元素。

尝试使用stack.peek()或等效文件。实际上是什么类和&你在使用库,用于堆栈吗? s[top]是无效的语法。

回到答案#1,我开始为你写一个peekRank()函数,认为检查堆栈空的时候有问题..但是当我看到你有空检查时停止了。

但是,看起来你并没有正确地偷看()。


[早期#2 - 不是问题]

您是否考虑过)处理?你的(代码似乎有一个堆栈空的守卫。

[早期#1--不完全是问题]

在整个处理过程中,在堆栈上放置一个'ENTIRE EXPRESSION'伪令牌,因此你有一个非空堆栈,或者尽管没有周围的表达式/封闭令牌,你也可以回答等级。