(C语言中)逆波兰算法(及计算器)
精选回答
伤感与温情 2023-09-02 12:49:53
逆波兰式子又叫做后缀表达式。(相对于前缀和中缀,但是它俩都破坏了式子本身,所以用后缀)
12+3应该表达为12 3+。(实际无空格,为了好看)
先解决一个问题,就是123+会不会认为是1和23或者1和2和3,其实是不会的。一般后缀式都是用栈存储的,你在定义栈的时候里面的elemtype e(当然也可以用别的就是举例),这个elemtype是重命名的int。scanf或者cin输入的时候,你先输入12,这个就被存在栈的第一空里面(因为是%d嘛),再输入3就被存在第二空里面了。这个不会混淆。
逆波兰算法是这么工作的:在后缀式中扫描,可能会扫描到一堆数字,但是这时候如果扫描到了一个运算符(加减乘除等),这时候提取运算符并提取运算符前面紧挨着的那两个数字(注意是紧挨),然后这两个数字和这一个运算符进行运算。比如123+,扫描得12,扫描得3,扫描得+(电脑得到了+这个运算符),紧接着取前面紧挨的12和3,进行运算,就是12+3了。如(2+1) * 3就是21+3*。扫描得2,扫描得1,扫描得+,ok这时候2+1=3,3入栈,重新while扫描。扫描得3(刚才算出来刚入栈的那个),扫描得3,扫描得*,ok这时候3*3=9。
1+23这种后缀式是表达不出来的。后缀它的意义就在于两个数,他们的运算符关系紧挨在他们后面。这个1+只有一个数,还原算是就是+1,无意义。
![](http://yyk.iask.sina.com.cn/pic/fimg/160992404090968984477.jpg)
相关推荐
游鉴湖秦观原文翻译
宋朝是文学作品发展的高峰时期,有很多文人留下了不少经典的作品。比如说苏轼、李清照、辛弃疾、秦观等一大批优秀的诗词作家,都有脍炙人口的作品。游鉴湖秦观原文翻译游鉴湖[宋]秦观画舫珠帘出缭墙,天风吹到芰荷乡。水光入...
展开详情雨果的创作生涯可分为几个时期
雨果1802年2月26日出生于法国东部城市贝桑松,出生6周后,雨果随父母到处奔波。雨果幼时便显露出极高的文学天赋,后来的创作产生了不小的影响。雨果的创作生涯可分为几个时期雨果的创作生涯可分为四个时期。第一个创作...
展开详情歌德的少年维特之烦恼是一部什么小说
歌德1749年8月28日出生于法兰克福镇的一个富裕家庭。小时候歌德的父亲非常严肃,相反,母亲用不同于父亲的温柔母爱来安慰、保护着歌德、鼓励和引导他的学习兴趣,努力培养歌德正确理解文学的能力。歌德的少年维特之烦恼...
展开详情李清照早期词风是什么
李清照,号易安居士,其作品多为婉约风格,属于婉约派代表词人。她有“婉约之词宗”之称,开创了重要的词体“易安体”,该词体对词坛影响深远。李清照是文学史上有名的天才女作家,被称为“千古第一才女”,在我国文学史上占据...
展开详情