(C语言中)逆波兰算法(及计算器)

[复制链接]
查看11 | 回复3 | 2013-1-8 23:22:02 | 显示全部楼层 |阅读模式
逆波兰式子又叫做后缀表达式。(相对于前缀和中缀,但是它俩都破坏了式子本身,所以用后缀) 12+3应该表达为12 3+。(实际无空格,为了好看)先解决一个问题,就是123+会不会认为是1和23或者1和2和3,其实是不会的。一般后缀式都是用栈存储的,你在定义栈的时候里面的elemtype e(当然也可以用别的就是举例),这个elemtype是重命名的int。scanf或者cin输入的时候,你先输入12,这个就被存在栈的第一空里面(因为是%d嘛),再输入3就被存在第二空里面了。这个不会混淆。 逆波兰算法是这么工作的:在后缀式中扫描,可能会扫描到一堆数字,但是这时候如果扫描到了一个运算符(加减乘除等),这时候提取运算符并提取运算符前面紧挨着...
回复

使用道具 举报

千问 | 2013-1-8 23:22:02 | 显示全部楼层
a+b ---> a,b,+a+(b-c) ---> a,b,c,-,+a+(b-c)*d ---> a,b,c,-,d,*,+a+d*(b-c)--->a,d,b,c,-,*,+a=1+3 ---> a=1,3 +它的优势在于只用两种简单操作,入栈和出栈就可以搞定任何普通表达式的运算。其运算方式如下:如果当前字符为变量或者为数字,则...
回复

使用道具 举报

千问 | 2013-1-8 23:22:02 | 显示全部楼层
我是来围观的...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行