c/c++表达式求值,即包含加减乘除以及括号的式子(栈)

首先要了解前缀表达式,中缀表达式,后缀表达式

其实三者的区别用一句话就可概括,中缀表达式是给人算的,前缀,后缀表达式是给计算机计算的

它们都是对表达式的记法,因此也被称为前缀记法、中缀记法和后缀记法。它们之间的区别在于运算符相对与操作数的位置不同:前缀表达式的运算符位于与其相关的操作数之前;中缀和后缀同理。

举例:
(3 + 4) × 5 - 6 就是中缀表达式
- × + 3 4 5 6 前缀表达式
3 4 + 5 × 6 - 后缀表达式

中缀表达式(中缀记法)
中缀表达式是一种通用的算术或逻辑公式表示方法,操作符以中缀形式处于操作数的中间。中缀表达式是人们常用的算术表示方法。
虽然人的大脑很容易理解与分析中缀表达式,但对计算机来说中缀表达式却是很复杂的,因此计算表达式的值时,通常需要先将中缀表达式转换为前缀或后缀表达式,然后再进行求值。对计算机来说,计算前缀或后缀表达式的值非常简单。

下面附上将中缀表达式转换成后缀表达式的过程(因为我不会转成前缀表达式,好吧主要是懒得学两种)

首先将中缀表达式装换为后缀表达式

0.首先声明两个栈s1,s2,具体用处代码中有解释

1.从左到右开始扫中缀表达式,如果遇到数字直接压入s2栈中

1.2,如果遇见左括号,直接压入s1栈中

1.3如果遇见’*‘||‘/‘||’+‘||’-‘,检查s1中是否为空,如果为空或者栈顶为左括号直接压入栈s1,否则如果此运算符的优先级高于s1栈顶的优先级(注意是高于),则入栈,否则将s1栈的运算符压入s2中,

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值