首页
题库
面试
求职
学习
竞赛
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收藏
12197浏览
热门推荐
相关试题
两个圆相交,交点是A1,A2。现在...
微软
网易
智力题
评论
(25)
来自
网易互娱2013研发工程...
以下指令集架构属于复杂指令集架构的是?
阿里巴巴
编译和体系结构
评论
(15)
来自
阿里巴巴2015实习生笔试题
比较B+Tree/Hash_Map...
网易
2015
哈希
网易互娱
游戏研发工程师
评论
(8)
来自
2015网易互娱校园招聘...
Linux 下的进程有哪三种状态()
网易
2015
操作系统
Linux
运维工程师
网易互娱
评论
(14)
来自
2015网易互娱校园招聘...
最佳二叉搜索树是?
网易
2015
树
运维工程师
网易互娱
评论
(7)
来自
2015网易互娱校园招聘...
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题
解析:
(1) 首先构造一个运算符栈(也可放置括号),运算符(以括号分界点)在栈内遵循越往栈顶优先级不降低的原则进行排列。
(2)从右至左扫描中缀表达式,从右边第一个字符开始判断:
如果当前字符是数字,则分析到数字串的结尾并将数字串直接输出。
如果是运算符,则比较优先级。如果当前运算符的优先级大于等于栈顶运算符的优先级(当栈顶是括号时,直接入栈),则将运算符直接入栈;否则将栈顶运算符出栈并输出,直到当前运算符的优先级大于等于栈顶运算符的优先级(当栈顶是括号时,直接入栈),再将当前运算符入栈。
如果是括号,则根据括号的方向进行处理。如果是右括号,则直接入栈;否则,遇右括号前将所有的运算符全部出栈并输出,遇右括号后将左右的两括号一起删除。
(3)重复上述操作(2)直至扫描结束,将栈内剩余运算符全部出栈并输出,再逆缀输出字符串。中缀表达式也就转换为前缀表达式了。