## 1.中缀转后缀算法思想

 遍历字符串:一.若为数字1~9,进入后缀队列;二.若为左括号‘(’,进入符号栈;三.若为右括号’)‘,将栈顶元素压入后缀队列,直到栈顶为’(‘;四.若为‘+’,‘-‘,当栈不为空时,将栈顶元素压入后缀队列,直到栈顶为’(‘;五.若为’*‘,’\‘,当栈不为空且栈顶元素不为’+‘,’-‘时,将栈顶元素压入后缀队列,直到栈顶为’(‘。遍历结束时,若栈不为空,将栈内元素压入后缀队列。

2.后缀表达式求值算法思想

 遍历后缀表达式:一.若为数字1~9,进入数据栈;二.若为运算符:’+‘,’-‘,’*‘,’/‘,取出数据栈顶两个元素进行运算,结果压栈三.输出栈顶元素。

运行代码

// test0304.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include<iostream>
using namespace std;#include<stack>
#include<queue>
int transform_calculate(char* c);int _tmain(int argc, _TCHAR* argv[])
{char c1[]={"((1+2)*(3+4))"};transform_calculate(c1);char c2[]="(((1+2)*3-4)/5)";transform_calculate(c2);system("pause");return 0;
}
int transform_calculate(char* c)
{stack<char> s;stack<int> s1;queue<char> q;cout<<"中缀表达式:";for (int i = 0; i < strlen(c); i++){cout<<c[i]<<" ";}cout<<endl;for(int i=0;i<strlen(c);i++){if(c[i]>'0'&&c[i]<='9')q.push(c[i]);else if(c[i]=='(')s.push(c[i]);else if(c[i]==')'){while(s.top()!='('){q.push(s.top());s.pop();}s.pop();}else if(c[i]=='+'||c[i]=='-'){while(s.top()!='('){if(!s.empty()){q.push(s.top());s.pop();}}s.push(c[i]);}else if(c[i]=='*'||c[i]=='/'){while(s.top()!='('&&s.top()!='+'&&s.top()!='-'){if(!s.empty()){q.push(s.top());s.pop();}}s.push(c[i]);}}while(!s.empty()){q.push(s.top());s.pop();}cout<<"后缀表达式:";queue<char> p=q;while(!p.empty()){cout<<p.front()<<" ";p.pop();}cout<<endl;while(!q.empty()){if(q.front()>'0'&&q.front()<='9'){s1.push(q.front()-'0');q.pop();          }else if(q.front()=='+'){int i=s1.top();s1.pop();int j=s1.top();s1.pop();s1.push(j+i);q.pop();}else if(q.front()=='-'){int i=s1.top();s1.pop();int j=s1.top();s1.pop();s1.push(j-i);q.pop();}else if(q.front()=='*'){int i=s1.top();s1.pop();int j=s1.top();s1.pop();s1.push(j*i);q.pop();}else if(q.front()=='/'){int i=s1.top();s1.pop();int j=s1.top();s1.pop();s1.push(j/i);q.pop();}}cout<<"计算结果:";while(!s1.empty()){cout<<s1.top();s1.pop();}cout<<endl<<endl;return true;
}

运行结果

C++ 中缀转后缀并求值相关推荐

  1. 中缀转后缀并求值(多位数版本)

    //中缀转后缀思路: //转换过程需要用到栈,具体过程如下: //1)如果遇到操作数,我们就直接将其输出. //2)如果遇到操作符,则我们将其放入到栈中,遇到左括号时我们也将其放入栈中. //3)如果 ...

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

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

  3. 【数据结构与算法】中缀表达式 - 后缀表达式 - 求值

    中缀转后缀 #include <stdio.h> #include <stdlib.h>#define STACK_INIT_SIZE 20 #define STACKINCR ...

  4. c 语言表达式求值中缀变后缀,表达式求值关于中缀式转后缀式的问题!

    已结贴√ 问题点数:10 回复次数:6 表达式求值关于中缀式转后缀式的问题! 本人看资料的时候遇到一段代码,这段代码中转为后缀式的优先级那句不明白,请大神赐教,代码如下(c语言) #include # ...

  5. 前缀,中缀,后缀表达式求值

    前缀表达式求值: 对于一个前缀表达式的求值而言,首先要从右至左扫描表达式,从右边第一个字符开始判断,如果当前字符是数字则一直到数字串的末尾再记录下来,如果是运算符,则将右边离得最近的两个"数 ...

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

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

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

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

  8. c++实现中缀转前缀,中缀转后缀,后缀表达式求值

    中缀转前缀 思想: 用两个栈实现,规则如下: (1) 初始化两个栈:运算符栈S1和储存中间结果的栈S2: (2) 从右至左扫描中缀表达式: (3) 遇到操作数时,将其压入S2: (4) 遇到运算符时, ...

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

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

最新文章

  1. 被“钱”困住的开源开发者们!
  2. 学习笔记(十二)——虚拟机安装和pycharm远程连接Ubuntu
  3. 全球及中国牛乳腺炎治疗系统行业发展调研及投资预测分析报告2022-2027年
  4. 使用Docker for Windows初体验
  5. cmd命令生成webservice_使用wsimport命令生成webService客户端代码实例
  6. Python 列表list与数组array的区别
  7. servlet中访问mysql无法包含中文的解决
  8. 分享一套非常不错的bootstarp3.0.2响应式模板
  9. php进程数是指什么,25.查看php 某个服务的进程数
  10. IIS之Web服务器
  11. linux tcl expect 安装(转)
  12. ssdp协议 upnp_【零知ESP8266】教程:SSDP简单服务发现协议示例
  13. 20120902 07
  14. 最新Java面试题整理!java字符大写转小写
  15. 关于丢番图方程x^2+y^2=n
  16. WIN10企业版未激活如何解决
  17. 关于unity3D shader的UV理解
  18. Visual Studio Code插件
  19. android开发实例之minitwitter登录界面+代码,登录界面_记住密码
  20. 支持生僻字且自动识别utf-8编码的php汉字转拼音类,支持生僻字且自动识别utf-8编码的php汉字转拼音类_php技巧...

热门文章

  1. im2bw函数的阈值level
  2. 高新技术企业认定审计报告常见的错误有哪些?
  3. Docker学习——docker高级
  4. 几种风控算法的原理和代码实现
  5. 深度学习之——反向传播
  6. 汽车租赁系统需求列表
  7. 【计算广告】feed流
  8. speedoffice文档中如何插入分数
  9. Markdown | 转义字符 HTML | 转义字符库 | ASCII
  10. 经典IDEF系统分析方法详细介绍