1

我正在努力为此获取伪代码。

为每个字符从左到右扫描字符串 If 操作数将其添加到字符串 Else if 运算符添加到堆栈 ....

我正在为如何处理 ( )s 而苦苦挣扎

4

4 回答 4

0

您是否尝试过这些链接?

http://www.geocities.com/e_i_search/premshree/web-include/pub/infix-postfix/index.htm

http://code.activestate.com/recipes/228915-infixpostfix/

于 2009-10-17T23:57:36.260 回答
0

(继续到堆栈,然后当你到达时)你从堆栈中弹出,直到你找到一个(.

Wikipedia对算法、支持函数和运算符有更详细的描述。

于 2009-10-18T01:11:17.403 回答
0
  1. 从左到右逐个字符扫描输入字符串。
  2. 如果字符是操作数,则将其放入输出堆栈。
  3. 如果字符是运算符且运算符堆栈为空,则将运算符压入运算符堆栈。
  4. 如果算子的栈不为空,可能有以下几种可能。
  5. 如果扫描运算符的优先级大于运算符堆栈的最顶部运算符,则将此运算符压入操作数堆栈。
  6. 如果扫描运算符的优先级小于或等于运算符堆栈的最顶部运算符,则将运算符从操作数堆栈中弹出,直到找到比扫描字符低优先级的运算符。无论扫描字符的优先级如何,都不要弹出('(')或(')')。
  7. 如果字符正在打开圆括号( '(' ),则将其推入运算符的堆栈中。
  8. 如果字符是右圆括号(')'),则从运算符堆栈中弹出运算符,直到我们找到一个左括号('(')。
  9. 现在从运算符堆栈中弹出所有剩余的运算符并推入输出堆栈。
于 2022-02-26T02:56:09.447 回答
-2

我对此有点生疏,但是当您遇到 '(' 时,会将其推入堆栈,因为它具有最高优先级。我不记得遇到 ')' 时该怎么办,但我认为它会继续堆栈也是因为它的优先级最高。

于 2009-10-17T23:59:01.387 回答