中缀转后缀

#include<stdio.h>
#include<stack>
using namespace std;
stack<int> s;
int compare(char str,char top)// 如果当前运算符优先级低于栈顶运算符,则需要pop,返回1
{int flag=0;if(str=='+'||str=='-'){if(top!='(')flag=1;}else if(str=='*'||str=='/'){//if(top=='*'||top=='/')flag=1;if(top!='(')flag=1;}else if(str=='(')flag=0;else if(str==')'){if(top!='(')flag=1;}return flag;
}
int main()
{char str[100]={"((A+B)*C-D)*E"},str1[100];int i=0,j=0;int flag=0,temp=0;for(;str[i];i++){//处理数字(以字母形式表示数字) if(str[i]>='A'&&str[i]<='Z'){str1[j++]=str[i];}//处理运算符 else if(str[i]=='('||str[i]=='+'||str[i]=='-'||str[i]=='*'||str[i]=='/'){while((!s.empty())&&compare(str[i],s.top())==1){  str1[j++]=s.top();s.pop();}s.push(str[i]);}else if(str[i]==')'){while(s.top()!='('){str1[j++]=s.top();s.pop();}s.pop();}}while(!s.empty()){str1[j++]=s.top();s.pop();}printf("%s",str1);
}

后缀表达式求值

#include<stdio.h>
#include<stack>
using namespace std;
stack<int> s;
//考虑多位数字 空格分割
int main()
{char str[100]={"2 3 * 5 4 * + 9 -"};int i=0;int flag=0,temp=0;for(;str[i];i++){if(str[i]=='+'||str[i]=='-'||str[i]=='*'||str[i]=='/')//操作符 {int p=0,q=0,val=0;p=s.top();s.pop();q=s.top();s.pop();  switch(str[i]){case '+':val=p+q;break;case '-':val=q-p;break;   case '*':val=p*q;break;case '/':val=q/p;break;                                                }//printf("val=%d\n",val);s.push(val);}else if(str[i]==' ')//空格 {if(flag==1){s.push(temp);//printf("temp=%d\n",temp);}temp=0;flag=0;}else if(str[i]<='9'&&str[i]>='0')//数字 {temp=temp*10+str[i]-'0';flag=1;}} printf("%d",s.top());
}
//答案为17 

后缀表达式求值和转换(C++)相关推荐

  1. 使用栈解决的一类经典问题:表达式转换及求值;中缀表达式;前缀表达式,后缀表达式,中缀转前缀;中缀转后缀;后缀表达式求值;波兰式,逆波兰式

    文章目录 背景知识 表达式转换问题(考研经典) 一:手工转换 (1)中缀转前缀和中缀转后缀 (2)前缀转中缀和后缀转中缀 二:用栈实现表达式转换 (1)中缀转后缀 (2)中缀转前缀 表达式计算问题(使 ...

  2. python前缀表达式求值_python数据结构与算法 11 后缀表达式求值

    从本节开始,删除原版的英文,直接发译后的文稿. 后缀表达式求值 栈的最一个应用例子,计算一个后缀表达式的值.这个例子中仍然用栈的数据结构.不过,当扫描表达式的时候,这次是操作数压栈等待,不是转换算法中 ...

  3. 表达式求值(中缀转后缀及后缀表达式求值)

    .中缀表达式转后缀表达式: 中缀表达式转后缀表达式遵循以下原则: 1.遇到操作数,直接输出: 2.栈为空时,遇到运算符,入栈: 3.遇到左括号,将其入栈: 4.遇到右括号,执行出栈操作,并将出栈的元素 ...

  4. iOS仿写计算器中缀转后缀 表达式求值

    github地址 iOS计算器 准备工作 由于OC没有自带的栈文件,只能链表模拟栈 typedef struct {char data[50];int top; }Stack;//符号栈 //之前把D ...

  5. 表达式求值及转换算法

    2019独角兽企业重金招聘Python工程师标准>>> 后缀表达式求值算法 stack operands; //运算数栈 while(没到表达式尾) {scanf("一个运 ...

  6. 基于栈的后缀表达式求值(洛谷P1449题题解,Java语言描述)

    题目要求 P1449题目链接 分析 给出后缀表达式求值,就相当于没了括号,而且很直接. 我们需要使用栈结构来完成任务. Java原装的栈使用了很多synchronized,导致性能不佳,但我们也就将就 ...

  7. 栈应用:后缀表达式求值

    在上一篇博客 栈应用:中缀表达式转后缀表达式 中我们知道如何通过栈将中缀表达式转为后缀表达式,这次我们继续用栈 来实现后缀表达式求值,结合上一篇博客. 上一篇博客中是用c语言实现的,由于c语言中不支持 ...

  8. php表达式求值,PHP实现基于栈的后缀表达式求值功能

    本文实例讲述了PHP实现基于栈的后缀表达式求值功能.分享给大家供大家参考,具体如下: 后缀表达式概述 后缀表达式,指的是不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左 ...

  9. java求值不用后缀表达式_数据结构之后缀表达式求值(java实现)

    数据结构之后缀表达式求值(java实现) 前记 ​ 今天在刷leet code的时候刷到了一道题,后缀表达式(逆波兰表达式)求值,我花了一会儿写了一下它的解法.但是今天我不谈什么是后缀表达式,有兴趣的 ...

最新文章

  1. Java多线程协作CountDownLatch,主线程等待子线程结束
  2. SQL Server 数据类型转换函数
  3. 天籁obd接口针脚定义_OBD协议介绍
  4. Run tomcat 5.5 in windows server 2003 x64
  5. 简述控制反转ioc_深度理解Spring IOC(控制反转)
  6. 2017.10.1 蚯蚓 思考记录
  7. 在ashx文件中使用Session
  8. it书籍分享免费下载
  9. DDC 显示器数据通道
  10. Linux 用户授权的方法,linux中用户和权限管理
  11. 传统的固定思维和敏捷思维的对比
  12. speedoffice(Excel)表格的外框线怎么设置?
  13. 华硕 小布 类似机器人_“嗨 小布跟着我” | 华硕首款智能机器人“小布”正式发布...
  14. 解决启动IIS发生意外错误 0x8ffe2740
  15. 五折交叉验证/K折交叉验证, python代码到底怎么写
  16. python语言pos_关于python:NLTK所有可能的pos标签是什么?
  17. 网店走出了困境,全因有skycc营销软件
  18. 万宁:地产行业如何摆脱“一次性利润”困局?
  19. 点阵图dotplot参数详解
  20. 删除掉指定目录下的.nomedia文件夹和文件

热门文章

  1. 复古派 Retropie=
  2. 跨境电商收款之派安盈Payoneer个人账号收款教程
  3. 大型医院PACS系统源码
  4. app开屏广告实现——借助webview和原生fetch请求实现
  5. python进行整数计算_零基础学python_05_数字(整数+浮点数)
  6. 微信二次分享(标题、摘要、缩略图)
  7. 语音信号短时时域分析
  8. 如何用软件测试交易系统的胜率,通达信官网程序交易测试
  9. Qt软件开发交流群分享
  10. LSCP: Locally Selective Combination in Parallel Outlier Ensembles-学习笔记