表达式求解

表达式求解是栈应用一个典型的例子,其基本算法思想为:

1.首先初始化1个运算数栈和1个运算符栈,运算符栈填入‘=’表示栈空。

2.对输入表达式进行逐字节解析,如果是操作数,则直接压入运算数栈,如果是运算符则进行一下比较:

(1)如果栈顶运算符优先级低于读入运算符优先级,则将运算符压栈,继续解析下面的字节;

(2)如果是同级的运算符则直接出栈,说明是左括号,完成去括号工作;

(3)如果栈顶运算符优先级高于读入的运算符,则出栈两个运算数和一个运算符,计算结果,压入运算数栈中。

3.当遇到'='则返回结果。


运算符比较遵循下面的规律:

1.同级运算符在栈内的运算符优先级高于栈外运算符优先级;

2.不同级运算符优先级部分栈内栈外,按照算术运算规律确定;

3.左括号在栈外优先级最高,在栈内优先级最低,但优先级和栈外右括号相同(进行去括号);

4.右括号在栈内优先级都最高,栈外优先级最低,在栈外时仅与栈内的左括号同级;

5.‘=’在栈内优先级最低。


演示代码如下:

输入(4+2)*3-15=回车即可求解。

<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值