社区
C#
帖子详情
小女子还是不太理解前缀表达式转后缀表达式,求大神指点迷津。。
lovezaxyt
2012-05-23 08:21:22
翻了很多资料,结果几乎都是C/C++的,之前也有大神指点过。
理论上好像有点明白了,真到写代码又不会了。。。
我知道前缀转后缀就是树的后序遍历。
能不能请大神们写点代码再次帮助我理解一下。。。。
灰常感谢各位。。。
...全文
225
11
打赏
收藏
小女子还是不太理解前缀表达式转后缀表达式,求大神指点迷津。。
翻了很多资料,结果几乎都是C/C++的,之前也有大神指点过。 理论上好像有点明白了,真到写代码又不会了。。。 我知道前缀转后缀就是树的后序遍历。 能不能请大神们写点代码再次帮助我理解一下。。。。 灰常感谢各位。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lovezaxyt
2012-05-24
打赏
举报
回复
总算搞定了,多谢大神SP1234...
PS:另外也多谢4楼虽然没帮上什么,参与有奖。。。哈哈哈
lovezaxyt
2012-05-23
打赏
举报
回复
我理解的是前缀表达式 / + a b c 压入栈后 弹出的是 c b a + / ,这样就是完成了前缀转后缀了么?
AI观星台
2012-05-23
打赏
举报
回复
我觉得楼主既然是在学数据结构,只要懂得什么是栈就行了。
不用非得纠结于前缀还是后缀表达式,那更是编译原理词法分析的内容。
尤其更不用纠结于怎么用C#来实现了。
以专业开发人员为伍
2012-05-23
打赏
举报
回复
“堆栈数据如何读取”这不是问题。你知道 a + b / c 这样压入的数据读取时就是 c / b + a 这样数据去弹出,就是全面地了解堆栈操作了。然后你使用这个知识设计“计算表达式值”的流程(你可以画一个流程图来说明计算过程),每一个步骤都是简明不含糊的,这就是目的。
以专业开发人员为伍
2012-05-23
打赏
举报
回复
[Quote=引用 5 楼 的回复:]
额。。。貌似我才自学一个月,接触的语言也只有C#。。。
至于书籍,选的是《数据结构与算法C#语言版》,外加传智播客.net的入门视频
楼上的意思是不是要设一个优先级,(为最先,然后/*-+,然后读到)的时候把这些符号压入另一个栈里面么,那数栈如何读取呢?
PS,我只是想设计一个类,在类里面实现一个字符串类似于“- + a b c”的前缀表达式转成"a b + c -"的后缀表达式
[/Quote]
如果牵扯到优先级就,就不是“前缀、中缀、后缀”的问题了,就是语法分析问题了。就像你PS中所列的,“前后缀”转换就是锻炼你的基本数据结构(堆栈)与简单算法的结合编程能力,是非常简单的小程序。
lovezaxyt
2012-05-23
打赏
举报
回复
T T
自己顶
lovezaxyt
2012-05-23
打赏
举报
回复
额。。。貌似我才自学一个月,接触的语言也只有C#。。。
至于书籍,选的是《数据结构与算法C#语言版》,外加传智播客.net的入门视频
楼上的意思是不是要设一个优先级,(为最先,然后/*-+,然后读到)的时候把这些符号压入另一个栈里面么,那数栈如何读取呢?
PS,我只是想设计一个类,在类里面实现一个字符串类似于“- + a b c”的前缀表达式转成"a b + c -"的后缀表达式
purui5210
2012-05-23
打赏
举报
回复
学过编译原理里面的算符优先文法分析吗?
对于(a - b) / c这个式子
首先需要建立一个优先级的表:类似于 / > -这样的。
记住一点,读入的为操作数时,直接放入操作数栈,读入符号时,要和符号栈顶部的符号做优先级比较。
操作数栈:
符号栈:# //开始为#,设定#的优先级小于任何符号
考察第一个字符:( 由于( > #,读入
操作数栈:
符号栈:#(
第二个:a 直接读入
操作数栈:a
符号栈:#(
第三个:- 这儿你要明白-是大于(的,左括号的优先级应该
只
大于#
操作数栈:a
符号栈:#( -
第四个:b 直接读入
操作数栈:a b
符号栈:#( -
第五个:) 这里想想也会明白,右括号的优先级应该是大于任何符号的,由于)> -,说明要运算了
操作数栈:a b
符号栈:#( -
因此输出后缀式的第一部分:a b -,在输出之后,栈变为:
操作数栈:a-b的结果
符号栈: # (
这时,由于)并未读入,所以还要再考察)和符号栈的栈顶符号,
这里会用到一个默认设定,就是左括号遇到右括号的时候,两个都放弃。栈变为:
操作数栈: a-b的结果
符号栈:#
之后的步骤就是重复的了,这个很好理解,
如果你理解到了,但是不会写代码的话,
说明你擅长用你学到的语言来把这个问题转化为计算机可以实现的代码!
然鸟
2012-05-23
打赏
举报
回复
不懂楼主的需求到底是什么?
董小宠
2012-05-23
打赏
举报
回复
嘿嘿 。
lovezaxyt
2012-05-23
打赏
举报
回复
自己顶一下
0-0
Thymeleaf中文文档合集-最新版
Thymeleaf文档的合集,包括ppt,pdf等等,只要你想学,你要你想用,只要你看,你肯定会
前缀表达式
转
后缀表达式
,及
后缀表达式
计算器
前缀表达式
转
后缀表达式
,及
后缀表达式
计算器[Java]
前缀表达式
转
后缀表达式
前缀表达式
转
后缀表达式
总体思路: 创建一个字符型的顺序栈栈和字符型的顺序表存放数字和运算符(顺序表和顺序栈创建参考1,2篇)。 将表达式符号两边插入空格(分割时就不会10分成1,0)后按空格分割。 遍历分割后的表达式:若遍历到数字则直接进顺序表; 若为运算符则先判断,栈若为空或栈顶是左括号或栈顶运算符优先级低于遍历到的运算符,则进栈,否则先栈内运算符出栈至顺序表直到满足进栈条件;若为左括号则直接进栈;若为右括号则栈内运算符一直
前缀表达式
转
后缀表达式
前缀表达式
转
后缀表达式
前缀表达式
,中缀表达式和
后缀表达式
的定义与联系(超详细)
目录 前缀、中缀、
后缀表达式
前缀表达式
前缀表达式
的计算机
求
值 中缀表达式
后缀表达式
后缀表达式
的计算机
求
值 中缀表达式
转
化为前缀和
后缀表达式
小结 前缀、中缀、
后缀表达式
前缀、中缀、
后缀表达式
是对表达式的不同记法,其区别在于运算符相对于操作数的位置不同,
前缀表达式
的运算符位于操作数之前,中缀和后缀同理 举例: 中缀表达式:1 + (2 + 3) × 4 - 5
前缀表达式
:- + 1 × + 2 3 4 5
后缀表达式
:1 2 3 + 4 × + 5 -
前缀表达式
前
前缀表达式
与
后缀表达式
求
法(栈的应用)
1.前缀、中缀、
后缀表达式
中缀表达式即为人们熟悉的数学运算式子写法。而前缀、
后缀表达式
是为了计算机计算方便的写法。
前缀表达式
是一种没有括号的算术表达式,与中缀表达式不同的是,其将运算符写在前面,操作数写在后面。
后缀表达式
则是将操作数写在前面,运算符写在后面。
前缀表达式
又称波兰表达式,
后缀表达式
又称逆波兰表达式。通过利用栈的特性,我们可以从中缀表达式得到前
后缀表达式
,轻松的计算出其结果。 我们...
C#
111,126
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章