当前位置: 首页 > 知识库问答 >
问题:

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

闾丘鸣
2023-03-14

日安!我正在使用堆栈实现一个内缀到后缀转换器。当用户输入一个没有括号的内插表达式时,它可以工作;但是当存在括号时,控制台说:

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个答案

蔚学林
2023-03-14

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

试试堆栈。peek()或同等产品。什么课

回到答案#1,我开始为您编写一个peekRank()函数,认为在堆栈为空时检查存在问题。。但当我看到你有一张空头支票时,我停了下来。

不过,看起来你没有正确地偷看顶部。

[早些时候的2--不是问题]

你有没有考虑过这个问题?您的(代码)上似乎有一个空堆栈保护。

[早些时候#1-不完全是问题]

在整个处理过程中,在堆栈上放置一个“完整表达式”伪令牌,这样你就有了一个非空堆栈,或者回答一个等级,尽管没有周围的表达式/封闭令牌。

 类似资料:
  • 我的讲师给了我一个任务,创建一个程序,使用堆栈将中缀表达式转换为后缀。我制作了堆栈类和一些函数来读取中缀表达式。 但是这个名为inToPos(charstring[])的函数正在创建断点,该函数负责使用堆栈将字符串中缀中的中缀表达式转换为字符串后缀中的后缀表达式。你们能帮帮我,告诉我我做错了什么吗? 这些是我的代码,非常需要您的帮助:) 注:inToPos功能是使用以下算法实现的: 从左到右扫描中

  • 我的讲师给了我一个任务,让我创建一个程序,使用堆栈将表达式和中缀转换为后缀。我制作了堆栈类和一些函数来读取中缀表达式。 但是这个函数,叫做,它负责使用堆栈将数组inFix中的inFix表达式转换为数组postFix中的postfix表达式,并没有做它应该做的事情...你们能帮帮我告诉我哪里做错了吗? 下面是从中缀转换为后缀的函数的代码,是我需要帮助修复的代码: 注意:convertToPostfi

  • 我的任务是使用单链表实现堆栈,将中缀形式的字符串转换为后缀形式。为简单起见,此字符串不包含任何空格。 简而言之,我的算法是: > 按操作顺序使用字符及其关联优先级创建临时节点 如果是操作而不是数字,则将其推到堆栈上/如果是数字,则自动将其附加到后缀字符串 每次将一个字符推送到堆栈上时,如果堆栈的顶部节点的优先级高于下一个字符的临时节点,请将其从堆栈中弹出,并将其附加到后缀字符串中。 这些步骤在手动

  • 我正在尝试取一个不固定表达式的字符串,并将其更改为后缀。 我相信大部分代码应该可以工作,但是当queue::enqueue(char,int)被调用时会出现“无法读取内存”的问题,程序无法读取“front”或“freal”。如果我在test_driver.cpp中更改iString,我会得到相同的错误,但是在stack::empty()上。我认为这是一个与类之间的联想有关的问题。 在最后的努力中,

  • 本文向大家介绍将中缀转换为后缀表达式,包括了将中缀转换为后缀表达式的使用技巧和注意事项,需要的朋友参考一下 前缀表达式是人类可读和可解的。我们可以轻松地区分算子的顺序,也可以在计算数学表达式时先使用括号将其求解。计算机无法轻松地区分运算符和括号,这就是为什么需要后缀转换的原因。 要将中缀表达式转换为后缀表达式,我们将使用堆栈数据结构。通过从左到右扫描infix表达式,当我们得到任何操作数时,只需将

  • 我应该将以下内容转换为后缀形式: 我得到了这个答案: 这是正确的吗?如果我使用了错误的后缀形式,那么之后还有很多问题都是不正确的。如果我错了,你能告诉我为什么吗?谢谢你的帮助。