【问题标题】:Problems with stack in an infix to postfix converter中缀到后缀转换器中的堆栈问题
【发布时间】:2013-07-12 07:24:33
【问题描述】:

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

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)


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

【问题讨论】:

    标签: java stack postfix-notation infix-notation


    【解决方案1】:

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

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

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

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


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

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

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

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

    【讨论】:

    • 我认为我正确地按下并弹出了 ( 和 ),即使没有括号,它也能正常工作。我遇到的困难是实现堆栈的顶部。 (程序假定用户正确输入了一个表达式,即适当的封闭标记)。
    猜你喜欢
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 2015-09-13
    • 2013-02-26
    • 2012-04-05
    • 2015-04-19
    • 2013-11-08
    相关资源
    最近更新 更多