首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
写出表达式((A+B)*C-(D-E)*(F+G))的前缀表
[填空题]
写出表达式((A+B)*C-(D-E)*(F+G))的前缀表达式
1
。
添加笔记
邀请回答
收藏(210)
分享
纠错
8个回答
添加回答
1
推荐
牛客-007
答案:-*+ABC*-DE+FG
解析:
(1) 首先构造一个运算符栈(也可放置括号),运算符(以括号分界点)在栈内遵循越往栈顶优先级不降低的原则进行排列。
(2)从右至左扫描中缀表达式,从右边第一个字符开始判断:
如果当前字符是数字,则分析到数字串的结尾并将数字串直接输出。
如果是运算符,则比较优先级。如果当前运算符的优先级大于等于栈顶运算符的优先级(当栈顶是括号时,直接入栈),则将运算符直接入栈;否则将栈顶运算符出栈并输出,直到当前运算符的优先级大于等于栈顶运算符的优先级(当栈顶是括号时,直接入栈),再将当前运算符入栈。
如果是括号,则根据括号的方向进行处理。如果是右括号,则直接入栈;否则,遇右括号前将所有的运算符全部出栈并输出,遇右括号后将左右的两括号一起删除。
(3)重复上述操作(2)直至扫描结束,将栈内剩余运算符全部出栈并输出,再逆缀输出字符串。中缀表达式也就转换为前缀表达式了。
编辑于 2015-02-02 10:37:24
回复(1)
34
新手_新手
发表于 2015-09-07 10:59:40
回复(2)
15
Eleven_Lover_Zeng
首先构造一颗树,该树的结构
中序遍历:A+B*C-D-E*F+G
后续遍历:AB+C*DE-FG+*-
前序遍历:-* +ABC*-DE+FG
发表于 2015-08-24 18:17:37
回复(0)
2
peacock
添加括号((((A+B)*C)-((D-E)*(F+G))))
将符号放到该符号的括号前(-(*(+(AB)C)*(-(DE)+(FG))))
去掉括号得:-*+ABC*-DE+FG
发表于 2017-07-27 10:40:50
回复(1)
1
dirty-life
按照运算的优先顺序构建二叉树,然后进行先序遍历
发表于 2015-08-31 16:39:26
回复(0)
0
舒意意123
长见识了
发表于 2017-03-16 14:47:52
回复(0)
0
新手PS
原来是树的前序遍历....
发表于 2016-03-15 22:19:52
回复(0)
0
牛客673977号
我写了很多括号和空格。。。
发表于 2016-02-28 12:28:00
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
编译和体系结构
运维工程师
网易
网易互娱
2015
来自:
2015网易互娱校园招...
上传者:
小牧魔法袋
难度:
8条回答
210收藏
12352浏览
热门推荐
相关试题
函数参数使用的空间是在()中申请的...
网易
2015
C++
网易互娱
游戏研发工程师
评论
(11)
来自
2015网易互娱校园招聘...
两个圆相交,交点是A1,A2。现在...
微软
网易
智力题
评论
(25)
来自
网易互娱2013研发工程...
下面描述中,符合结构化程序设计风格...
搜狐
Java工程师
C++工程师
iOS工程师
安卓工程师
运维工程师
前端工程师
算法工程师
PHP工程师
2018
评论
(1)
PING命令使用ICMP的哪一种c...
网易
2015
网络基础
运维工程师
网易互娱
评论
(14)
来自
2015网易互娱校园招聘...
一个关系模式为Y(X1,X2,X3...
网易
2015
数据库
运维工程师
网易互娱
SQL+MySQL
评论
(30)
来自
2015网易互娱校园招聘...
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题
解析:
(1) 首先构造一个运算符栈(也可放置括号),运算符(以括号分界点)在栈内遵循越往栈顶优先级不降低的原则进行排列。
(2)从右至左扫描中缀表达式,从右边第一个字符开始判断:
如果当前字符是数字,则分析到数字串的结尾并将数字串直接输出。
如果是运算符,则比较优先级。如果当前运算符的优先级大于等于栈顶运算符的优先级(当栈顶是括号时,直接入栈),则将运算符直接入栈;否则将栈顶运算符出栈并输出,直到当前运算符的优先级大于等于栈顶运算符的优先级(当栈顶是括号时,直接入栈),再将当前运算符入栈。
如果是括号,则根据括号的方向进行处理。如果是右括号,则直接入栈;否则,遇右括号前将所有的运算符全部出栈并输出,遇右括号后将左右的两括号一起删除。
(3)重复上述操作(2)直至扫描结束,将栈内剩余运算符全部出栈并输出,再逆缀输出字符串。中缀表达式也就转换为前缀表达式了。