通过栈将中缀表达式转换为等价的后缀表达式

2023-12-31 13:38:22

为什么要从中缀表达式转换为等价的后缀表达式?

? ? ? ? →使后缀表达式包含运算符优先级的信息,方便计算机能理解进行运算。

什么是中缀表达式?

? ? ? ? →中缀表达式虽然是人类看得懂的简单算术形式,但对计算机来说反而复杂难以理解

什么是后缀表达式? ?

? →后缀表达式是计算机能理解的形式,后缀表达式是将运算符写在元素(即非运算符)之后。

题目:

已知操作符包括? ?+,-,*,/,(,)? ?将中缀表达式? ?a+b-a*((c+d)/e-f)+g? ?转换为等价的后缀表达式ab+acd+e/f-*-g+? ?时,用栈来存放暂时还不能确定运算次序的操作符,若栈初始时为空,则转换过程中同时保存在栈中的操作符的最大个数是( )。
A.5
B.7

C.8
D.11

定义三个东西:

  1. 后缓生成部分【初始值:null】【不需要接受括号】
  2. 运算符栈【初始值:null】
  3. 中缀未处理部分【初始值:a+b-a*((c+d)/e-f)+g】

运算符栈出栈是加在后缓生成部分里的最后一个元素之后的

  1. 当前的中缀未处理部分的第一个元素如果是运算符,就取出该运算符并放进运算符栈里最后一个元素之后,也就是运算符栈的入栈
  2. 当前的中缀未处理部分的第一个元素如果是元素(即非运算符),可以直接加在后缓生成部分里最后一个元素之后。

故经过查看,转换过程中同时保存在栈中的操作符的最大个数是5个,选A

文章来源:https://blog.csdn.net/weixin_45528773/article/details/135314485
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。