C语言-栈之应用之利用中缀表达求值(菜鸟帖,大佬们勿喷)

在数据结构中求运算表达式的值大抵有三种方法前缀表达,中缀表达和后缀表达式,这我说下我写中缀表达式的方法。

可以使用栈来存储输入表达式的操作符和操作数。  输入的表达式是由操作数(又称运算对象)和运算符以及改变运算次序的圆括号连接而成的式子。算术表达式为中缀表示法,本程序输入的表达式采用中缀表示法,在这种表达式中,二元运算符位于两个操作数中间。  由于不同运算符之间存在优先级,同一优先级的运算间又存在着运算结合顺序的问题,所以简单的从左到右的计算是不充分的。当然凭直观判断一个中缀表达式中哪个运算符最先,哪个次之,哪个最后并不困难,但是机器中还需要利用栈做一些先后符号的判断以确定先运行哪个计算。

中缀表达式对应于二叉树的中序遍历,利用两个栈,一个压入操作符,一个压入值。

以浮点型输入输出,成为后缀表达式的一部分;若是运算符,则与栈顶的运算符进行 比较,若 “当前>栈顶,则入栈,当前<=栈顶,则出栈“直至扫描结束,最后把规定字符之前的都输出。

 

+

-

*

/

(

)

%

^

#

+

-

*

/

%

(

+

0

)

0

^

#

0

=

我的思路就是利用一个二维数组放入符号优先级判断,两个对比时候把两个符号参数传入然后返回符号,然后判断后进行运算。

附上我之前写的一个从记事本中导入数据然后把结果输出到另一个记事本中的小东西。点击打开链接

菜鸟第一次写博客,请大家多多包涵。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值