算术表达式-将中缀表达式转换为后缀表达式

一、算术表达式

是什么?由数字和运算符组成的式子。简单清楚的描述计算过程和内容。

算术表达式分为:前缀表达式、中缀表达式、后缀表达式;中缀表达式符合人类的日常思维习惯。

二、中缀表达式如何在计算机中存储?

         采用树的数据结构,缺点是如果表达式过于复杂,树的高度会很高,极大的增加了时间复杂度和空间复杂度,但是转换成线性结构,效率将会提高很多,所以需要将中缀表达式先转换成前缀或后缀。依靠栈来进行计算。

这里用栈的数据结构实现算术表达式(简单起见,这里定义的是未省略括号的算术表达式,支持+、-、*、/)。

E.W.Dijkstra在20世纪60年代发明了一个简单算法,用两个栈(一个用于保存运算符,一个用于保存操作数)完成了这个任务。表达式由括号、运算符和操作数组成,根据以下4种情况从左到右逐个将这些实体送入栈处理:

1.将操作数压入操作数栈;

2.将运算符压入运算符栈;

3.忽略左括号;

4.在遇到右括号时,弹出一个运算符,弹出所需数量的操作数,并将运算符和操作数的运算结果压入操作数栈。

在处理完最后一个右括号之后,操作数栈上只会有一个值,即表达式的值。

三、将中缀表达式转换为后缀表达式

参考博客链接:https://www.cnblogs.com/james111/p/7027820.html

 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值