将中缀转换为后缀的伪代码

发布于 2024-08-07 21:38:15 字数 106 浏览 8 评论 0原文

我正在努力获取伪代码。

从左到右扫描字符串中的每个字符 如果操作数将其添加到字符串 else if 运算符添加到堆栈 ....

我正在努力解决如何处理 ( ) 的问题

I'm struggling getting the pseudo code for this.

Scan string left to right for each char
If operand add it to string
Else if operator add to stack
....

i'm struggling on how to handle ( )s

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

凉风有信 2024-08-14 21:38:15

( 进入堆栈,然后当您到达 ) 时,您会从堆栈中弹出,直到找到 (

维基百科对该算法有更详细的描述,支持函数和运算符。

( goes on to the stack, then when you get to ) you pop from the stack until you find a (.

Wikipedia has a more detailed description of the algorithm, supporting functions as well as operators.

離人涙 2024-08-14 21:38:15
  1. 从左到右逐个字符扫描输入字符串。
  2. 如果字符是操作数,则将其放入输出堆栈。
  3. 如果该字符是运算符且运算符堆栈为空,则压入运算符
    进入操作员堆栈。
  4. 如果操作符的栈不为空,可能有以下几种可能。
  5. 如果扫描的运算符的优先级大于最上面的运算符
    操作符堆栈,将该操作符压入操作数堆栈。
  6. 如果扫描的运算符的优先级小于或等于最上面的
    运算符堆栈的运算符,从操作数堆栈中弹出运算符,直到
    我们发现一个比扫描字符优先级低的运算符。永远不会弹出
    ( '(' ) 或 ( ')' ) 无论扫描的优先级是什么
    特点。
  7. 如果字符是左括号 ( '(' ),则将其推入运算符的
    堆。
  8. 如果字符正在关闭圆括号 ( ')' ),则从以下位置弹出运算符
    运算符堆栈,直到找到左括号 ('(' )。
  9. 现在从运算符堆栈中弹出所有剩余的运算符并压入
    进入输出堆栈。
  1. Scan input string from left to right character by character.
  2. If the character is an operand, put it into output stack.
  3. If the character is an operator and operator's stack is empty, push operator
    into operators' stack.
  4. If the operator's stack is not empty, there may be following possibilities.
  5. If the precedence of scanned operator is greater than the top most operator
    of operator's stack, push this operator into operand's stack.
  6. If the precedence of scanned operator is less than or equal to the top most
    operator of operator's stack, pop the operators from operand's stack until
    we find a low precedence operator than the scanned character. Never pop out
    ( '(' ) or ( ')' ) whatever may be the precedence level of scanned
    character.
  7. If the character is opening round bracket ( '(' ), push it into operator's
    stack.
  8. If the character is closing round bracket ( ')' ), pop out operators from
    operator's stack until we find an opening bracket ('(' ).
  9. Now pop out all the remaining operators from the operator's stack and push
    into output stack.
顾忌 2024-08-14 21:38:15

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

I am a bit rusty at this, but when you encounter a '(' , you push it onto the stack because it has the highest precedence. I cant remember what to do when you encounter ')', but i think it goes on the stack as well because its the highest precedence.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文