中缀到后缀转换器中的堆栈问题
Posted
技术标签:
【中文标题】中缀到后缀转换器中的堆栈问题【英文标题】: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)
我的问题是实现排名(堆栈顶部)。
【问题讨论】:
【参考方案1】:啊哈!比较最顶层的排名时,您需要“查看堆栈”。因为“顶层”必须弹出元素。
尝试 stack.peek() 或等效的。对于堆栈,您实际上使用的是什么类和库? s[top]
语法无效。
回到答案#1,我开始为您编写一个peekRank()
函数,认为检查堆栈何时为空时存在问题.. 但当我看到您有一个空检查时就停止了。
不过,您似乎没有正确地窥视()顶部。
[之前的 #2 -- 不是问题]
您是否考虑过 ) 处理?你的 ( 代码似乎有一个堆栈空保护。
[之前的#1--不完全是问题]
在整个处理期间在堆栈上放置一个“ENTIRE EXPRESSION”伪标记,这样您就有一个非空堆栈,或者尽管没有周围的表达式/封闭标记,但还是回答了一个排名。
【讨论】:
我认为我正确地按下并弹出了 ( 和 ),即使没有括号,它也能正常工作。我遇到的困难是实现堆栈的顶部。 (程序假定用户正确输入了一个表达式,即适当的封闭标记)。以上是关于中缀到后缀转换器中的堆栈问题的主要内容,如果未能解决你的问题,请参考以下文章
数组模拟实现一个50个字符串的堆栈,使用堆栈,将中缀算术表达式转换成后缀表达式。
数组模拟实现一个50个字符串的堆栈,使用堆栈,将中缀算术表达式转换成后缀表达式。