NYOJ 467 中缀式变后缀式
中缀式变后缀式
- 描述
-
人们的日常习惯是把算术表达式写成中缀式,但对于机器来说更“习惯于”后缀式,关于算术表达式的中缀式和后缀式的论述一般的数据结构书都有相关内容可供参看,这里不再赘述,现在你的任务是将中缀式变为后缀式。
- 输入
-
第一行输入一个整数n,共有n组测试数据(n<10)。
每组测试数据只有一行,是一个长度不超过1000的字符串,表示这个运算式的中缀式,每个运算式都是以“=”结束。这个表达式里只包含+-*/与小括号这几种符号。其中小括号可以嵌套使用。数据保证输入的操作数中不会出现负数。
数据保证除数不会为0 - 输出
- 每组都输出该组中缀式相应的后缀式,要求相邻的操作数操作符用空格隔开。
- 样例输入
-
2 1.000+2/4= ((1+2)*5+1)/4=
- 样例输出
-
1.000 2 4 / + = 1 2 + 5 * 1 + 4 / =
-
AC码:
-
#include<stdio.h> int main() {int T,i,top;char str[1005],ch[1005];scanf("%d",&T);while(T--){scanf("%s",str);top=-1;for(i=0;str[i]!='\0';i++){if(str[i]>='0'&&str[i]<='9'){while((str[i]=='.')||(str[i]>='0'&&str[i]<='9')){printf("%c",str[i]);i++;}printf(" ");}if(str[i]=='=')break;if(str[i]==')'){while(top>=0&&(ch[top]!='(')){printf("%c ",ch[top]);top--;}top--;}else if(str[i]=='('){top++;ch[top]=str[i];}else if(str[i]=='*'||str[i]=='/'){while((ch[top]=='*')||(ch[top]=='/')){printf("%c ",ch[top]);top--;}top++;ch[top]=str[i];}else{while(top>=0&&(ch[top]!='(')){printf("%c ",ch[top]);top--;}top++;ch[top]=str[i];}}while(top>=0){printf("%c ",ch[top]);top--;}printf("=\n");}return 0; }
NYOJ 467 中缀式变后缀式相关推荐
- nyoj-257-郁闷的C小加(一 )中缀式变后缀式
题目链接:here~~~~~~~ 今天看了此题,感觉栈和队列很好用,进一步深入了解 一个算术表达式,含有数字(为简化处理,数字只有一位),运算符:+.-.*,以及括号,求表达式的值. 给出的表达式是一 ...
- c 语言表达式求值中缀变后缀,表达式求值关于中缀式转后缀式的问题!
已结贴√ 问题点数:10 回复次数:6 表达式求值关于中缀式转后缀式的问题! 本人看资料的时候遇到一段代码,这段代码中转为后缀式的优先级那句不明白,请大神赐教,代码如下(c语言) #include # ...
- java自动递增前缀式和后缀式区别
java自动递增前缀式和后缀式区别 java自动递增(自动递减)前缀式表达式 '++' 操作符位于变量或表达式的前面,而后缀式表达式'++'位于变量或表达式的后面,Example: 前缀式: ++i: ...
- 中缀表达式变后缀分析
中缀表达式变后缀表达式 @(算法学习) 将中缀变为相应的后缀,需要根据的优先级来进行栈的变化. 具体操作是:我们用一个栈即可,存储的是符号栈,数字直接输出,因为符号输出顺序以及时机需要调整,因此用栈做 ...
- nyoj 1272 表达式求值(中缀式转后缀式)
表达式求值 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 假设表达式定义为: 1. 一个十进制的正整数 X 是一个表达式. 2. 如果 X 和 Y 是 表达式,则 X+ ...
- 算术表达式的前缀式、中缀式、后缀式相互转换
中缀表达式(中缀记法) 中缀表达式是一种通用的算术或逻辑公式表示方法,操作符以中缀形式处于操作数的中间.中缀表达式是人们常用的算术表示方法. 虽然人的大脑很容易理解与分析中缀表达式,但对计算机来说中缀 ...
- 语法树,前缀式,中缀式,后缀式
前序遍历:根左右 中序遍历:左根右 后序遍历:左右根 前缀式:+AB 中缀式:A+B 后缀式:AB+ 例题一: 前序遍历(前缀式):- + 4 * 1 - 5 2 / 6 3 根在前,从最后开始:-5 ...
- java 中缀式转后缀式
import java.util.Stack; import java.util.regex.*; public class StringToArithmetic { private StringTo ...
- 逆波兰式(后缀式)详解
原表达式:a*(b*(c+d/e)-f)# /* # 为表达式结束符号*/ 后缀式:abcde/+*f-*# 为运算符定义优先级:# ( + - * / ** -1 ...
最新文章
- 虚幻引擎5(UE5)实时VFX游戏特效制作入门到精通
- Axure RP一个专业的快速界面原型设计工具
- datastage服务器项目nls安装,datastage 安装
- 训练 yolo 模型
- java 找不到方法,已经定义的方法找不到
- php 错误提示,php怎么显示错误
- adams求微分方程c语言,ADAMS在求解微分方程组中的应用
- 用ANSYS画矩形_钢轨打磨用复合砂轮磨削温度场的研究
- transitionend、change、classList、兼容代码、元素样式属性的操作、-Attribute自定义属性、阻止跳转、元素绑定相同事件、元素解绑事件、事件冒泡、事件三阶段
- 跟我学调试-必备神器:Postman
- 烂泥:NFS做存储与KVM集成
- 省市县三级数据联动 -Java
- 基于Proteus无实物STM32入门自学教程(三)--静态数码管
- html注册cab包,OCX控件打包成CAB并实现数字签名过程
- 一级建造师考试备考各科知识点记忆技巧
- python oled_树莓派使用 OLED 屏显示图片及文字
- 闲鱼互动玩法标准化建设
- dataframe两个表合并_Spark实战第二版(涵盖Spark3.0)第三章 宏伟的角色dataframe
- SqlServer无备份下误删数据恢复
- 初识MQ和RabbitMQ