波兰式

一. 波兰式(前缀表达式)

波兰逻辑学家J.Lukasiewicz于1929年提出的表示表达式的一种方式,即二元运算符至于运算数之前的一种表达方式。

二.中缀表达式

普通的表示表达式的一种方法,将二元运算符置于运算数中间,也是大多数情况下使用的一种方法。

三.逆波兰式(后缀表达式)

与波兰式相反,是二元运算符置于运算数之后的一种表达方式。每一运算符都置于其运算对象之后,故称为后缀表示。

波兰式与逆波兰式表示时的一个特点是,表达式中各个运算是按运算符出现的顺序进行的,故无须使用括号来指示运算顺序

中缀表达式   后缀表达式      前缀表达式

A+B               AB+               +AB
A+B*C           ABC*+            *+AB
(A+B)*(C+D) AB+CD+*       *+AB+CD

从上面的例子可以看出:
(1) 在三种表示中,运算对象出现的顺序相同;
(2) 在后缀表示中,运算符按实际计算顺序从左到右排列,且每一运算符总是跟在其运算对象之后。

(3) 在前缀表示中,运算符按实际计算顺序从左到右排列,且每一运算符总是跟在其运算对象之前。

四.波兰式的应用——算术表达式求值

在数据结构中,使用的概念完成表达式的求值操作,在计算机系统处理表达式时,将中缀表达式以后缀表达式的形式表达。

具体实现方法大致为:

  • 设两个栈:操作数栈和运算符栈
  • 操作数依次入操作数栈
  • 运算符入栈前与运算符的栈顶运算符比较优先级
  1. 优先级高于栈顶运算符,压入栈,读入下一个符号
  2. 优先级低于栈顶运算符,栈顶运算符出栈,操作数栈退出两个操作数,进行运算,结果压入操作数栈
  3. 优先级相等,左右括号相遇,栈顶运算符出栈即可
  4. 后缀表达式读完,栈顶为运算结果


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值