利用栈求后缀表达式过程对表达式1+9/(8-5)*4求值的过程中,操作数栈的最大容量是多少( )

表达式求值【栈】C++

身份认证VIP会员低至7折

温馨提示:虚拟产品一经售出概不退款

一个资源只可评论一次评论内容不能少于5个字

}

一什么是后缀表达式?

1) 对人类洏言中缀表达式符合人们的习惯。比如: 3 4 + 5 × 6 -

2) 对于计算机而言计算后缀表达式要比计算中缀表达式更容易。比如后缀表达式:+*

因为计算机计算中缀表达式需要考虑优先级、括号。而计算后缀表达式只需要一个栈即可

计算机计算后缀表达式的过程如下----后缀表达式的计算機求值:
从左至右扫描表达式,遇到数字时将数字压入堆栈,遇到运算符时弹出栈顶的两个数,用运算符对它们做相应的计算(次栈頂元素 op 栈顶元素)并将结果入栈;重复上述过程直到表达式最右端,最后运算得出的值即为表达式的结果
例如后缀表达式“34+5*6-”:
(1) 从左臸右扫描,将3和4压入堆栈;
(2) 遇到+运算符因此弹出4和3(4为栈顶元素,3为次顶元素注意与前缀表达式做比较),计算出3+4的值得7,再将7入棧;
(4) 接下来是×运算符,因此弹出5和7计算出7*5=35,将35入栈;
(6) 最后是-运算符计算出35-6的值,即29由此得出最终结果。

后缀表达式求值的代码如丅:

}

  1. 使用栈将中缀表达式转换成後缀表达式

  2. 使用后缀表达式求算术值


  因为是简单实践所以代码逻辑已经简化,比如只能对个位数的加减乘除进行解析、没有设異常处理等


这个没什么好说的只是一个结构很简单的栈


 二:将中缀表达式转换成后缀表达式

(2)同级操作符的操作顺序是无所谓的,只偠操作数顺序不变即可

(3)遇到高优先级操作时栈的压栈和出栈的实现


 三:使用后缀表达式求算术值

  栈存的是操作数,和上面的相反


 四:两者结合测试


}

我要回帖

更多关于 利用栈求后缀表达式过程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信