问题标签 [postfix-notation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3151 浏览

c# - 使用一元/二元运算符中缀的后缀

我正在尝试制作从后缀到中缀符号的转换器,需要一些帮助。已经有一个关于中缀到后缀转换的问题,它给出了一个我无法转换回来的例子。(注意:那里缺少减号!)

以下是我的转换器的输出,其中第一个“列”是后缀输入,第二个是我的中缀输出,第三个是我可能应该得到的(?):

你认为有可能解决这个问题,还是最后两行实际上转换正确?你会如何编写算法来解决这个问题?

请假设更多的运算符(不仅是+and -)可以设置为一元和二元,其中一元运算符的优先级高于二元运算符。

参考

  1. Ruby Quiz #148: Postfix to Infix,同样来自Google Groups
  2. 在 LiteratePrograms 上具有一元运算符支持的调车场算法(C、Python、Perl)
0 投票
3 回答
1244 浏览

algorithm - 以下哪个后缀表示法正确表示中缀和 1+2+3+4?

我正在测试一个中缀到后缀到中缀的转换器,并发现了某种不确定性。例如,一个简单的中缀和

可以转换为后缀一

假设不累积具有相同优先级的运算符。如果他们是那么我得到

另一方面,以下所有后缀表达式都可以转换为初始和

所有这些后缀表达式都正确吗?

更新1

如果你要做这样的转换器,你会选择哪种形式?我需要选择一个进行测试。

0 投票
3 回答
7055 浏览

python - 这个 Python 后缀表示法(反向波兰表示法)解释器能否变得更加高效和准确?

这是一个 Python 后缀符号解释器,它利用堆栈来评估表达式。是否有可能使这个功能更高效和准确?

0 投票
2 回答
5192 浏览

c - 后缀中缀

我一直在试图弄清楚这个问题。我的任务是制作一个基本的计算器。

为此,我需要后缀中的说明。我在网上找到了一些代码,它有效但使用了gets()。

我尝试更换获取...但程序不再工作。这是代码,我希望有人能找到错误(使用 2+4 作为输入,它读取并识别 2 作为数字,然后 + 作为运算符,然后 4 作为数字......然后卡在一个沿线某处循环)

需要明确的是,使用此代码对我的作业来说是公平的游戏,只要我引用它作为参考(因为它只是一小部分)。

感谢您的帮助,我真的很感激:)。

0 投票
1 回答
8323 浏览

java - Converting a prefix expression to postfix

I'm trying to implement a program that changes a prefix expression to a postfix one using recursion.

I've written what I thought would work but instead of the output ab/c*de+f*- I get aa/aa/*aa/aa/*- instead.

I think my code is getting stuck when I try to get the first character of String pre or when I try to delete the first character of String pre. Any suggestions/comments?

0 投票
1 回答
1825 浏览

c++ - 带小数点的 C++ 后缀求值

我已经实现了分流场算法(使用来自维基百科的代码,修改为使用 stl 堆栈/队列),但现在我想知道它将如何评估我从除法中得到的小数。scriptasylum.com 上的 javascript 应用程序(无法链接)工作得很好,并给出了预期的输出:

我在这里找到了一个后缀评估的例子,但它没有完成并且没有考虑小数点。

这是我当前的代码:http ://codepad.org/zDXnOELK

0 投票
1 回答
1050 浏览

java - 使用java在后缀应用程序的中缀中获取错误的输出

我最近编写了一个 java 程序,它接受一个中缀表达式并将其转换为一个后缀表达式。它在大多数情况下都有效,但我在某些表达式中得到了错误的输出。例如,表达式 a+b+c+d+e 在应该输出 ab + c + d + e + 时将输出 abcde+++++。

我发现如果我在第 24 行用 <= 更改 < ,它将解决这个问题,但是我会得到一个空堆栈错误,并且其他一些表达式将输出不正确,例如 a+b*c 将输出 ab+c *,当它应该是 abc*+ 时。

0 投票
1 回答
3257 浏览

c - 使用从文件中读取的行将 C 编程表达式树后缀到解决方案

我对 C 编程非常陌生。我偶然发现了一些答案。一些使用旧语法。

问题是我必须创建一个程序来读取文本文件并使用读取的后缀行转换为中缀方程。

文本文件将是这样的:

C 文件将在 Ubuntu 终端中读取,其中文本文件是唯一的输入,输出是中缀形式。

关于如何使用结构、数组和联合来完成此任务的一些建议。 我们已经获得了创建 struct opnode、vnode 并将它们联合起来的格式。数组部分我不知道如何从读取转移到数组本身。到目前为止,与 java 相比,C 是如此奇怪。

[编辑]

对不起,我忘了提到这是家庭作业......不再是中缀的后缀。它是解方程的后缀。

在没有语法知识和习惯于面向对象编程的情况下,我不知道如何编辑。

/* 这会读取终端中输入的文本文件字符串 * 然后命令读取文本文件 * 等等 * 以及其他所有内容 */

0 投票
2 回答
829 浏览

parsing - 如何将方法调用转换为后缀表示法?

我正在为类似 javascript 的语言编写一个编译器来取乐。又名我正在学习轮子,所以我为自己制作了一个并试图找出所有内容,但现在我被卡住了。

我知道在解析简单的中缀表达式时,调车场算法是一个不错的算法。我能够弄清楚如何为前缀和后缀运算符扩展该算法,并且还能够解析简单的函数。

例如:2+3*a(3,5)+b(3,5)变成2 3 <G> 3 5 a () * + <G> 3 5 b () +

<G>是一个推入堆栈的保护令牌,它将存储返回地址等。()是调用堆栈顶部的函数的调用命令,该函数弹出必要数量的参数并在返回时推回结果。)

如果函数名只是一个标记,我可以简单地将其标记为函数符号,如果直接后跟一个括号。在此过程中,如果我遇到一个函数符号,我会将其压入操作符堆栈,并在完成参数转换后将其弹出。

到目前为止,这是有效的。

但是,如果我添加具有成员函数的选项,则.运算符。事情变得更加棘手。例如,我想将a.b.c(12)+d.e.f(34)I can't mark c 和 f 转换为函数,因为a.b.cd.e.f是函数。如果我在这样的表达式上启动解析器,结果将a b . <G> 12 c () . d e . <G> 34 f () .是显然是错误的。我希望它是<G> 12 a b . c . () <G> 34 d e . f. ()正确的。但是如果我添加一些括号,我可以让事情变得更复杂:(a.b.c)()。或者我创建一个函数,该函数返回一个我再次调用的函数:f(a,b)(c,d).

有没有简单的方法来处理这些棘手的情况?

0 投票
3 回答
7045 浏览

c++ - 在 C++ 中为中缀和后缀表达式使用堆栈

我正在编写一个程序,该程序接受用户输入并使用堆栈将中缀表达式转换为基于优先级的后缀表达式,操作数始终位于运算符之前。例如,如果用户输入:

(a+b*c)

那么程序应该显示:

ABC**

到目前为止,我有这个:

哪个编译并运行,但没有按应有的方式运行。当输入像“ab”这样的表达式时,程序将按原样显示“ab”,但如果我输入“a+b+c”,则只会显示“a”。这意味着程序不会将运算符放入堆栈中以便稍后显示。我需要帮助的是修改程序,以便在输入运算符时将其添加到堆栈中,然后在输入完成后根据操作数之后的优先级 (*>/>+>-) 显示。

我对 C++ 和一般编程很陌生,所以任何建议都会很棒。