首页 > 编程知识 正文

后缀表达式与中缀表达式,后缀转中缀表达式

时间:2023-05-06 06:49:38 阅读:39813 作者:4505

本文博文主要解决几个问题:

1、骑马订式后缀式

2、骑马订前缀式

3、后缀式改为骑马订式

1、将骑马订表达式转换为后缀表达式的方法有两种。 请假设有骑马式a:1((2)3)4)5,将其转换为后缀式。

方法一:直接转换法

(1)首先,决定式a的运算顺序,加上括号。 ) ) ) ) ) () ) )4) )- 5 ) )。

)2)从最里面的括号开始运算,转换为后缀表达式的方法是,(忽略括号)数字在前,符号在后。

1 ) )2)=23

2 ) ) (2)3) )4) )2 3 ) )。

3 ) )1((2)3) )4) [按运算顺序从左到右排列]

4 ) (1) (2)3)4) )5)=123 )4)5-

后缀的表达式为1234 * 5

方法二:利用表达式树

首先将骑马订表达式转换为表达式树,然后依次遍历表达式树以生成后缀表达式。

如何将骑马订表达式转换为表达式树。 表达式树的叶是操作数,其他节点是操作数,根节点是优先级最低且位于右边的操作符。 例如,上述表达式的优先级最低的是-,而-位于最右边,因此根为-。 (不包括括号。 上述公式的公式树如下。

假设有骑马订表达式转换的表达式树2,骑马订表达式转换为前缀表达式的有骑马订表达式1 ()2(3)4)- 5。 请转换为前缀表达式。

方法一:直接转换法

(1)首先,决定式a的运算顺序,加上括号。 ) ) ) ) ) () ) )4) )- 5 ) )。

)2)从最里面的括号开始运算并转换为前缀表达式的方法是,(忽略括号)符号在前,数字在后。

1 ) )2)=23

2 ) ((2)3) )4)=* 234

3 ) )1()2)3)4) )= 1* 234

4 ) ) (1) (23 )4) )5)=- 1* 2345

前缀表达式为- 1* 2345

方法二:利用表达式树

首先将骑马订表达式转换为表达式树,然后依次遍历表达式树以创建前缀表达式。

如何将骑马订表达式转换为表达式树。 表达式树的叶是操作数,其他节点是操作数,根节点是优先级最低且位于右边的操作符。 例如,上述表达式的优先级最低的是-,而-位于最右边,因此根为-。 (不包括括号。

经过前面的路径得到的前缀表达式是- 1 * 2 3 4 5

3、后缀式骑马订式请假设有后缀式1234 * 5,转换为前缀式。

利用表达式树:

从左到右扫描面的后缀表达式。 一次读取一个符号的表达式。 如果符号是操作数,则创建单节点树并将其推送到堆栈中。 如果符号是操作符,则从堆栈中弹出两棵树T1和T2,T1先弹出,形成新树。 这棵树的根是操作员,其左、右儿子分别是T2和T1。 然后,将指向这棵新树的指针推入堆栈。

因为扫描123之后的前三个符号是操作数,所以创建三个单节点树,并将指向它们的指针推入堆栈。

扫描后将读取“”,因此指向最后两棵树的指针将弹出,形成新树,并将指向新树的指针推入堆栈。 以下流程图以相同的原理执行。

扫描4和*后扫描和5后

扫描-扫描最后一次中继得到的表达式树,得到所需的中继表达式。 1 () (2)3) *4)-5

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。