问题标签 [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 回答
2424 浏览

c - 在 C 中评估后缀表达式

我正在尝试编写一个评估后缀算术表达式的程序。该程序向我的函数发送一个字符串evaluatePostfix,该函数继续识别操作数和运算符并得出一个整数解。我在这个程序中操作堆栈,方法是在识别时推送扫描的字符,当然在需要评估时执行适当的弹出函数。但现在,我遇到了一个问题,程序挂在似乎是无限循环的地方。我想我不确定如何告诉函数在评估第一个字符后继续处理字符串中的下一个字符。另一件需要注意的是,用户在每个操作数和运算符之间放置一个空格。这是我的功能:

我知道操纵堆栈的函数是正确的,因为它们是由我的导师提供的。有人可以给我一个关于我缺少什么的线索吗?

0 投票
2 回答
738 浏览

math - 评估后缀符号

我写了一个堆栈类来评估后缀表达式。我知道如何做,除了它的顺序。假设我有一个简单的,例如:

A B - C +

我唯一的问题是,是 A - B 还是 B - A?我在网上找不到任何解释这部分评估的资源。

0 投票
1 回答
1238 浏览

c - 评估 C 中的 PostFix 表达式(新问题)

我之前的问题可以在这里找到(只是想向这个最有帮助的社区提供保证,我不会试图发送垃圾邮件):

在 C 中评估后缀表达式

我的问题涉及评估后缀表达式。假设我有一个后缀表达式,例如:

3 2 1 2 + ^ ^

我正在尝试将值(所有用户输入为字符串)存储在堆栈中,并通过使用其他函数,我打算评估它,最终结果是堆栈中唯一要弹出的剩余元素并提出。在代码块中摆弄调试器几个小时后,我发现该函数没有在堆栈中存储任何内容。此外,当我使用我的函数来检查所指向的字符是否是一个操作数时,尽管它是一个操作数,但它忽略了它应该采取的适当行动。这是我使用的包含 isOperand 函数的代码:

显然,我不知道如何仅将指针上的一个值发送给它。如果它是两位数甚至三位数,我怎么能告诉程序识别呢?再次感谢您的宝贵时间,我当然感谢人们提供的所有帮助。

****编辑/找到解决方案****

好吧,由于我还不能作为“新用户”回答我自己的问题,所以我将改为编辑原始帖子,以便将来可能对其他人有用。

似乎标记化在这里是合适的情况。通过使用

strtok(字符串分隔符

该函数将一个字符串分成更小的字符串,这些字符串由空格之间的空字符分隔。我仍然不能 100% 确定是不是因为我使用了字符串空格的分隔符(又名“”),但无论如何。

结束循环

令牌 = strtok(NULL, " ");

而不是将指针增加 1 就足够了,因为它似乎正在获取原始字符串并在通过将较小的字符串部分完全从原始字符串中删除而将其推入堆栈时直接修改它。虽然不是一个好的做法(因为我应该创建原始字符串的副本以保持我感觉的输入的完整性并改为修改副本),但我相信它适用于该项目的范围。我只是想分享我的发现,以防将来对任何人有用。另外,如果我对使用的描述中有一些需要纠正的地方,无论如何,我很想知道。

0 投票
2 回答
7647 浏览

java - Java Binary Expression Tree - Checking parenthesis in an expression

I coded up this program which will take an infix notation expression and build a binary tree from it. Right now the only input expression that actually works would be like 2 + 2. I can't seem to figure out at all how to make it handle parenthesis and take in longer expressions such as ( ( 2 + 2 ) * 3 ). For my output I am trying to get it into postfix notation and also evaluate the expression. So right now if I plug in 2 + 2 without the parenthesis my output is 22+ and it evaluates it so it prints 4.

I need to figure out a way for it to print out the output with spaces in between each number and operator and also get it to accept longer expressions with parenthesis. I have no idea right now how to continue from here. Can anyone please help me out?

Thanks!

This is my code:

0 投票
1 回答
626 浏览

java - 后缀程序的中缀不起作用

我应该编写一个程序来将中缀转换为后缀。它适用于某些人,但有时不正确。特别是在包含括号的中缀表达式上。谁能给我一个线索,为什么这是错误的?例如,中缀表达式

返回5562-*42^++8*((2

0 投票
4 回答
1296 浏览

programming-languages - 连接语言可以使用前缀表示法吗?

级联语言有一些非常有趣的特性,例如能够组合不同数量的函数,并且能够分解出函数的任何部分。然而,许多人不屑一顾,因为它们使用了后缀表示法,而且很难阅读。另外,波兰人可能不喜欢人们倒着使用他们精心制作的符号。

那么,是否可以有前缀符号?如果是,那么权衡是什么?

我知道它是如何工作的,但我对连接语言没有经验,所以我可能遗漏了一些东西。基本上,一个函数将以相反的顺序被评估,而值将从堆栈中以相反的顺序被拉出。为了证明这一点,我将比较后缀和前缀的样子。以下是一些使用传统后缀表示法的连接表达式。

表达式从左到右计算:在第一个示例中,5被压入堆栈,然后dup复制堆栈顶部的值,然后将堆栈*顶部的两个值相乘。函数首先从堆栈中提取最后一个参数:在第二个示例中,-调用时2位于堆栈顶部,但它是最后一个参数。

这是我认为前缀表示法的样子:

表达式从右到左求值,函数首先从堆栈中提取它们的第一个参数。请注意前缀过滤器示例如何与其描述更接近,并且看起来与应用样式相似。我注意到的一个问题是考虑因素可能没有那么有用。例如,在后缀表示法中,您可以2 -从中分解3 2 -以创建减法函数。在前缀表示法中,您可以从中分解- 3- 3 2创建一个subtractFromThree 函数,这似乎没有那么有用。

除非有任何明显的问题,否则使用前缀表示法的连接语言可能会赢得不喜欢后缀表示法的人的青睐。任何见解都值得赞赏。

0 投票
1 回答
7134 浏览

c++ - 使用堆栈和队列的 C++ 计算器

我试图在课堂上理解一个关于使用堆栈和队列作为编程计算器的方法的主题。我了解什么是中缀和后缀表达式,但是它如何使程序更容易评估表达式以及为什么队列和堆栈在这种情况下是理想的?谢谢

0 投票
1 回答
2727 浏览

c++ - C ++将后缀转换为中缀

所以我正在用 C++ 编写一个基于 cmd 的计算器。我完成了它,但我想知道,在将中缀转换为后缀之后,我有一个名为后缀队列的队列,其中包含正确顺序的运算符/操作数。如何将后缀表达式转换回中缀?

0 投票
2 回答
19393 浏览

c++ - 在 C++ 中使用堆栈(链表)进行中缀到后缀转换

今天是个好日子!我是 C++ 新手(在 stackoverflow 中也是如此),我需要各位专家的帮助。即使没有错误或警告,此代码也有问题。它只是在程序执行时挂起。

该程序使用链表(堆栈)将中缀转换为后缀。

请帮我!我是新手,没有你们我走不了多远。非常感谢!

0 投票
1 回答
6403 浏览

c++ - 使用堆栈中缀到后缀到输出(后缀计算器)

今天是个好日子!我是 C++ 新手(在 stackoverflow 中也是如此),我需要各位专家的帮助。

我这里有一个代码,应该向用户询问中缀表达式,然后将其转换为后缀并输出结果(后缀计算器)。但是,我无法立即将后缀转换为输出,因此一旦显示后缀表达式,它就会在输出真正的答案之前再次要求后缀表达式(例如 1 2 + 之后有空格)。

没有错误或警告,但是当我运行程序时,计算机在显示后缀表达式后说“file.exe 已停止工作”。所以程序能够正确地将中缀转换为后缀表达式,但是在显示输出时仍然存在一些问题。

我是新手,我真的需要各位专家的帮助。如果您帮助我更正我的程序,我将不胜感激。非常感谢您,祝您有愉快的一天!