逆波兰表示法的概念

逆波兰表示法是一种将运算符写在操作数后面的描述程序( 算式 )的方法。举个例子,我们平常用中缀表示法描述的算式( 1 +2 ) * ( 5+
4 ),改为逆波兰表示法之后则是12 + 54 +*。相较于中缀表示法,逆波兰表示法的优势在于不需要括号

实现过程

  1. 主要使用了栈的数据结构
  2. 现在我有式子 12 + 54 +* ,1 2先压入栈,遇到运算符后,把 1 2取出来,用遇到的运算符进行运算,1 + 2 = 3;再把3压入里面,在压5 4,遇到运算符+后 取出5 4 进行运算,得 9 ,在把9压入,遇到*后 取出进行运

总结

程序在计算时从算式开头逐一读取字符串,如果字符串是操作数( 数值 )则压人栈,如果是运算符( + 、 -
*)则从栈中取出两个数值算出结果再压入栈,如此循环。 最终栈中剩下的数值便是答案

代码实现

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int top,S[1000];
void push(int x){//元素入栈top++;S[top] = x;}
int pop(){//元素出栈top--;return S[top+1];}
int main()
{int a,b,i=0;top = 0;char s[100];while(scanf("%s",s)!= EOF){//输入数据以空格相断 如1 2 * 3 4而不是12*34因为scanf("%s",s)读取不了空格后面的,但是while并没有结束,还可以接着输入if (s[0] == '+'){a = pop();b = pop();push(a+b);}else if(s[0] == '-'){a = pop();b = pop();push(b - a);}else if(s[0] == '*'){a = pop();b = pop();push(a*b);}else{push(atoi(s));printf("%d\n",atoi(s));//把字符串变为数字,传入的字符串首地址}}printf("%d",pop());return 0;
}

C语言实现逆波兰表示法(栈)相关推荐

  1. LeetCode: 150:逆波兰表示法求值。

    题目 根据逆波兰表示法,求表达式的值. 有效的运算符包括 +, -, *, / .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换 ...

  2. kr中的逆波兰表示法计算器

        波兰表示法(Polish notation,或波兰记法),是一种逻辑.算术和代数表示方法,其特点是操作符置于操作数的前面,因此也称做前缀表示法.如果操作符的元数(arity)是固定的,则语法上 ...

  3. 波兰表示法与逆波兰表示法

    身为初学者,能力有限,知识尚少,如有纰漏,还望海涵.   对于表达式,通常有三种表示方法,前.中.后缀表示法.我们日常使用的数学算式就是中缀表示法.例:1+5*10-10/2 码文不易,希望支持,谢谢 ...

  4. c语言逆波兰计算器程序,c语言实现逆波兰计算器

    最近学算法学到了栈 写了一个典型例子逆波兰计算器.用很像链表的形式写的下面来看思路. 首先要做的是一个栈的模型具有压栈和出栈的功能 #include #include #define MAX_S 20 ...

  5. C语言实现逆波兰表达式计算函数(含浮点型、整型混合运算)

    基本实现思路: (1)逆波兰表达式运算: 按顺序遍历整个表达式 ,若遇到操作数,则入栈,若遇到操作符,则连续弹出两个操作数(有序)进行运算,并将结果压入栈中,当栈中只剩下一个操作数时,为最终运算结果. ...

  6. c语言数据结构逆波兰算法,[分享]表达式二叉树逆波兰式的转换程序源代码(C++)...

    [分享]表达式二叉树逆波兰式的转换程序源代码(C++) RT,这是我两年前学数据结构时的作品. 拿出来给大家分享. ps:当时才学C++,代码写的不好,见笑了./*将中缀式转换为表达式树,并打印逆波兰 ...

  7. C语言实现逆波兰法计算表达式

    主体:两个函数 transMtoA(std,stdA);//将中缀表达式->后缀表达式caculate(stdA,stacknum);//计算结果 注意!!! 减法和除法时stack[top - ...

  8. c语言逆波兰计算器程序,逆波兰计算器(C语言)

    源自<The C Programming Language> P62 ex4.3: 计算例如:(1 - 2) * (4 + 5)的值,采用逆波兰表示法(即后缀表示法) 代码: main.c ...

  9. C语言编程对一个逆波兰式进行求值,算式与逆波兰式

    致憨憨的从前 当年,老师布置一道作业:编写一个计算器,要求输入算式,给出结果.算式中只包含+-*/^这几个运算符,算式中不含负数.由于是Python课程,我很快给出了解题方式,如下: while Tr ...

  10. 【栈】【150. 逆波兰表达式求值】【中等】(需回顾)

    根据逆波兰表示法,求表达式的值. 有效的运算符包括 +, -, *, / .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换句话说 ...

最新文章

  1. C# checked、unchecked操作符
  2. 关于python中的self,ins , cls的解释
  3. DSAPI多功能组件编程应用-DS提示气泡
  4. 【JavaScript】【PPT】继承的本质
  5. 基于fabric框架区块链实现科学数据出版系统
  6. 搭建完全分布式的hadoop
  7. php中...的用法
  8. python输入hello*3_python入门到实践-Hello Python3
  9. 图像无损、有损压缩方法调研
  10. Spring批处理CSV处理
  11. H3C S1526交换机端口镜像配置
  12. Scala是多范式编程语言
  13. windows录屏_电脑是怎么录屏的呢?推荐三个录屏实用方法!
  14. svn —— 版本回退
  15. python 多行注释 字符串_python多行注释和跨行字符串
  16. 服务器时间修改连接超时时间设置,云服务器连接超时时间设置
  17. 支付宝登录java_支付宝登录java和android
  18. Python学习手册之Python异常和文件
  19. 对吞吐量和吞吐率的理解
  20. 10亿手机号如何去重?(BitMap)

热门文章

  1. python爬虫实现贴吧表情包的爬取
  2. 这次要是讲不明白Spring Cloud核心组件,那就白写了!
  3. Range Coder编码比特流
  4. Excel 预习阶段Day4
  5. ubuntu安装mplay
  6. python抖音培训真的假的
  7. python开发一个自动批改本地Word作业的程序
  8. 字节跳动岗位薪酬体系曝光,看完感叹:我酸了
  9. 关于计算机二进制编码的游戏,二进制编码数字
  10. 伪逆矩阵(pseudo-inverse)