Advertisement

中缀表达式转为后缀表达式并进行计算

阅读量:

中缀表达式转换为后缀表达式

具体实施流程如下:

  1. 建立两个栈结构,其中s1用于存放运算符,而s2则用于保存计算过程中的中间结果;

  2. 按照从左到右的顺序对中缀表达式进行逐个字符的扫描;

  3. 当识别到操作数时,立即将其压入栈s2;

  4. 当遇到运算符时,需将其与s1栈顶元素进行优先级比较:
    4.1 若s1为空或者栈顶元素为左括号“(”,则直接将该运算符压入s1;
    4.2 否则,若当前运算符的优先级高于栈顶运算符,则同样将其压入s1;
    4.3 若当前运算符优先级较低或相等,则将s1栈顶的运算符弹出并压入s2中,之后再次返回步骤(4-1),继续与新的栈顶元素进行比较;

  5. 对于括号处理部分:
    5.1 若为左括号“(”,则直接将其压入s1;
    5.2 若为右括号“)”,则持续弹出s1中的运算符并压入s2,直至遇到对应的左括号为止,此时将这对括号移除不作处理;

  6. 不断重复第2至第5步的操作,直到扫描完整个表达式;

  7. 在完成所有扫描后,将s1中剩余的所有运算符依次弹出并压入到s2中;

  8. 最后依次取出s2中的内容并输出,所得序列的逆序即为原中缀表达式转换后的后缀表达式形式。

示例说明:

以中缀表达式“1+((2+3)×4)-5”为例,展示其转化为后缀表达式的具体过程

![在这里插入图

全部评论 (0)

还没有任何评论哟~