数据结构实验之栈与队列二:一般算术表达式转换成后缀式
对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。

Input
输入一个算术表达式,以‘#’字符作为结束标志。

Output
输出该表达式转换所得到的后缀式。

Sample Input
ab+(c-d/e)f#
Sample Output
abcde/-f+
Hint
Source

/******
若为左括号直接入栈
若为右括号输出左括号之前的所有符号,然后删除左括号
若为‘+’,‘-’,‘*’,‘/’,输出栈中优先级大于等于他们的左右符号直到遇到左括号或者栈空。然后再把改符号进栈。*******/
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
typedef char elemtype;
#define max 10000
typedef struct st
{elemtype*top,*base;int stacksize;
}sqstack;
void creat(sqstack*s)
{s->base=(elemtype*)malloc(max*sizeof(elemtype));s->top=s->base;s->stacksize=max;
}
void push(sqstack*s,char e)
{s->top++;*s->top=e;
}
void pop(sqstack*s)
{printf("%c",*s->top--);
}
int empty(sqstack*s)
{if(s->top == s->base)return 0;elsereturn 1;
}
int main()
{
char l[1000];
sqstack s;
creat(&s);
scanf("%s",l);
for(int i=0;l[i]!='#';i++)
{if(l[i] >='a'&&l[i]<= 'z')printf("%c",l[i]);elseif(l[i] == '(')push(&s,l[i]);elseif(l[i] == ')')    {while(*s.top!='('){pop(&s);}s.top--;}elseif(l[i] == '+'||l[i] == '-'){while(empty(&s)&&*s.top!='(')pop(&s);push(&s,l[i]);}elseif(l[i] == '*'||l[i] == '/'){while(empty(&s)&&*s.top!='('&&(*s.top == '*'||*s.top == '/'))pop(&s);push(&s,l[i]);}
}while(s.base!= s.top){pop(&s);}printf("\n");return 0;
}

一般算术表达式转换成后缀式相关推荐

  1. SDUT-2132_数据结构实验之栈与队列二:一般算术表达式转换成后缀式

    数据结构实验之栈与队列二:一般算术表达式转换成后缀式 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 对于一个基于二元运 ...

  2. 数据结构实验之栈与队列二:一般算术表达式转换成后缀式

    Description 对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之. Input 输入一个算术表达式,以'#'字符作为结束标志. Output 输出该表达式转换所得到的后缀式. ...

  3. 数据结构实验之栈二:一般算术表达式转换成后缀式

    题目描述 对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之. 输入 输入一个算术表达式,以'#'字符作为结束标志. 输出 输出该表达式转换所得到的后缀式. 示例输入 a*b+(c-d/ ...

  4. B - 数据结构实验之栈与队列二:一般算术表达式转换成后缀式

    理解:分成4种情况这里不介绍,这里讲本质.后缀表达式的运算符优先级,是把前缀的运算符排列出一个优先级,然后从最优先输出的,不一定连续输出.而4种情况就是对优先级的处理. Description 对于一 ...

  5. SDUT OJ 2132 (一般算术表达式转换成后缀式)

    题目描述 Description 对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之. Input 输入一个算术表达式,以'#'字符作为结束标志. Output 输出该表达式转换所得到的 ...

  6. java中的後綴表達式_求Java堆栈,将中缀算术表达式转换成后缀表达式。

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 package lab2.lang; import java.util.ArrayList; import java.util.HashMap; impo ...

  7. java 中缀算术表达式转换成后缀表达式_求Java堆栈,将中缀算术表达式转换成后缀表达式。...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 package lab2.lang; import java.util.ArrayList; import java.util.HashMap; impo ...

  8. c语言表达式的后缀,中缀表达式转换成后缀表达式C语言程序(一)

    逆波兰表达式(Reverse Polish Notation)又叫后缀表达式.它是一种非常的表达式,可以将复杂的表达式转换成可以依靠简单的操作得到结果的表达.下面这段C语言即是用于实现将中缀表达式转换 ...

  9. Java 将中缀表达式转换成后缀表达式

    使用堆栈进行表达式的堆栈将中缀(Infix)表达式转换成后缀(postfix)表达式 完整代码 import java.io.IOException;public class InToPost {pr ...

最新文章

  1. UE5使用MetaHuman构建超现实的角色
  2. 与通用计算机相比 单片机具体有哪些特点,嵌入式系统-复习大纲_彭荣
  3. c# 自定义控件之小小进度条
  4. 使用Helm优化Kubernetes下的研发体验:基础设施即代码
  5. Spring 集成 mybatisPlus
  6. 使用X.509数字证书加密解密实务(二)-- 使用RSA证书加密敏感数据(转)
  7. Maven系列2--pom.xml 配置详解
  8. mysql date timestamp_【Mysql】Datetime和Timestamp区别,及mysql中各种时间的使用
  9. 小鹏汽车回应“非法收集人脸数据被罚10万”:误购第三方设备 数据已删除
  10. Python中表达式int('0x10, 36)的值是。。。
  11. sql中毫秒数与格式化时间的转换
  12. HTTP和HTTPS请求的整个过程详解
  13. android录制视频设置分辨率,Android录制视频的全面屏适配
  14. 百度 tts 语音合成前端无法播放问题解决
  15. 静态条件下三轴加速度求角度的算法
  16. 【博闻强记】eclipse背景色的更改
  17. Email邮件发送设置 工具开发整理(网易邮箱、Mailgun为例) 下篇
  18. java遍历变量_java – 循环遍历众多变量
  19. Smart3D系列教程4之 《案例实战演练1——小物件的照片三维重建》
  20. 在Controller注入Service报错的解决方法

热门文章

  1. Android and Apple 投屏至linux电脑
  2. python不等于缺陷
  3. 单片机代码怎么读懂_单片机要这么学?八条谨记!
  4. skimage exposure模块解读
  5. windows的回车换行“\r\n“,Linux的回车换行“\n“
  6. 【MySQL】Linux下登录mysql时忘记密码了怎么办?
  7. C++常用强制类型转换
  8. quagga源码分析--大内总管zebra
  9. C#6.0 十大常用特性
  10. Docker下部署wordpress