首页 > 试题广场 >

写出表达式((A+B)*C-(D-E)*(F+G))的前缀表

[填空题]
写出表达式((A+B)*C-(D-E)*(F+G))的前缀表达式1
推荐
答案:-*+ABC*-DE+FG
解析:
(1) 首先构造一个运算符栈(也可放置括号),运算符(以括号分界点)在栈内遵循越往栈顶优先级不降低的原则进行排列。
(2)从右至左扫描中缀表达式,从右边第一个字符开始判断:
如果当前字符是数字,则分析到数字串的结尾并将数字串直接输出。
如果是运算符,则比较优先级。如果当前运算符的优先级大于等于栈顶运算符的优先级(当栈顶是括号时,直接入栈),则将运算符直接入栈;否则将栈顶运算符出栈并输出,直到当前运算符的优先级大于等于栈顶运算符的优先级(当栈顶是括号时,直接入栈),再将当前运算符入栈。
如果是括号,则根据括号的方向进行处理。如果是右括号,则直接入栈;否则,遇右括号前将所有的运算符全部出栈并输出,遇右括号后将左右的两括号一起删除。
(3)重复上述操作(2)直至扫描结束,将栈内剩余运算符全部出栈并输出,再逆缀输出字符串。中缀表达式也就转换为前缀表达式了。
编辑于 2015-02-02 10:37:24 回复(1)
发表于 2015-09-07 10:59:40 回复(2)
首先构造一颗树,该树的结构
中序遍历:A+B*C-D-E*F+G
后续遍历:AB+C*DE-FG+*-
前序遍历:-* +ABC*-DE+FG

发表于 2015-08-24 18:17:37 回复(0)
添加括号((((A+B)*C)-((D-E)*(F+G))))
将符号放到该符号的括号前(-(*(+(AB)C)*(-(DE)+(FG))))
去掉括号得:-*+ABC*-DE+FG
发表于 2017-07-27 10:40:50 回复(1)
按照运算的优先顺序构建二叉树,然后进行先序遍历
发表于 2015-08-31 16:39:26 回复(0)
长见识了
发表于 2017-03-16 14:47:52 回复(0)
原来是树的前序遍历....
发表于 2016-03-15 22:19:52 回复(0)
我写了很多括号和空格。。。
发表于 2016-02-28 12:28:00 回复(0)