0

再会!我正在使用堆栈实现中缀到后缀转换器。当用户输入不带括号的中缀表达式时,它起作用;但是当有括号时,控制台会说:

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)


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

4

1 回答 1

0

啊哈!在比较最顶层的排名时,您需要“堆栈窥视”。因为“顶层”必须弹出元素。

尝试 stack.peek() 或等效的。对于堆栈,您实际上使用的是什么类和库? s[top]不是有效的语法。

回到答案#1,我开始peekRank()为您编写一个函数,认为检查堆栈何时为空时存在问题。但是当我看到您进行空检查时就停止了。

不过,您似乎没有正确地窥视()顶部。


[之前的#2——不是问题]

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

[之前的#1——不完全是问题]

在整个处理过程中将“ENTIRE EXPRESSION”伪标记放在堆栈上,这样您就有一个非空堆栈,或者尽管没有周围的表达式/封闭标记,但还是回答了一个等级。

于 2013-07-14T06:41:01.477 回答