中缀变后缀(nyoj)
中缀式变后缀式
- 描述
-
人们的日常习惯是把算术表达式写成中缀式,但对于机器来说更“习惯于”后缀式,关于算术表达式的中缀式和后缀式的论述一般的数据结构书都有相关内容可供参看,这里不再赘述,现在你的任务是将中缀式变为后缀式。
- 输入
-
第一行输入一个整数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 / =
代码
#include<stdio.h>
#include<stack>
#include<ctype.h>using namespace std;stack<char>stack_char;#define MAXSIZE 1010int main()
{int count, i;char str[MAXSIZE];scanf("%d", &count);while(count--){while(!stack_char.empty())stack_char.pop(); //将栈清空scanf("%s", str);stack_char.push('='); //首先将栈中压入一个括号,for(i = 0; str[i] != '='; i++){if(isdigit(str[i]) || str[i] == '.'){printf("%c", str[i]); //数字直接打印continue;}if(i > 0 && isdigit(str[i - 1]))printf(" ");switch(str[i]){case '(':stack_char.push(str[i]);break;case '+':case '-':while(stack_char.top() != '(' && stack_char.top() != '='){printf("%c ", stack_char.top());stack_char.pop();}stack_char.push(str[i]); break;case '*':case '/':while((stack_char.top() == '*' || stack_char.top() == '/') && stack_char.top() != '=')//栈顶符号为‘*’‘/’时依次弹栈{printf("%c ", stack_char.top());stack_char.pop();}stack_char.push(str[i]);break;case ')': //栈顶符号依次输出while(stack_char.top() != '('){printf("%c ", stack_char.top());stack_char.pop();}stack_char.pop();}}while(!stack_char.empty()){printf(" %c", stack_char.top());stack_char.pop();}printf("\n");}return 0;
}
中缀变后缀(nyoj)相关推荐
- c 语言表达式求值中缀变后缀,表达式求值关于中缀式转后缀式的问题!
已结贴√ 问题点数:10 回复次数:6 表达式求值关于中缀式转后缀式的问题! 本人看资料的时候遇到一段代码,这段代码中转为后缀式的优先级那句不明白,请大神赐教,代码如下(c语言) #include # ...
- 数据结构——堆栈——计算器的原理(中缀变后缀)
定义:栈(stack)又名堆栈,它是一种运算受限的线性表.限定仅在表尾进行插入和删除操作的线性表.这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈或压栈,它是把新元素放到 ...
- 使用栈结构实现中缀转后缀算法(python)
看了网上的中缀变后缀的python算法,感觉都没北大陈斌老师讲的好,最近又在解决密码学的问题,现在遇到算式里含有自变量没办法解决,害,python学的太菜也不知道咋解决.但觉得有必要和大家分享用栈来解 ...
- 数据结构之栈实现中缀转后缀并计算结果
一.中缀变后缀过程分析 给定一个中缀,最后变为后缀的过程其实并不算复杂,下面分析一下过程: 1. 首先面对一个中缀表达式,我们需要两个栈,一个用来存放运算符,即符号栈 operatorstack,一个 ...
- NYOJ 467 中缀式变后缀式
中缀式变后缀式 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 人们的日常习惯是把算术表达式写成中缀式,但对于机器来说更"习惯于"后缀式,关于算术表达 ...
- nyoj-257-郁闷的C小加(一 )中缀式变后缀式
题目链接:here~~~~~~~ 今天看了此题,感觉栈和队列很好用,进一步深入了解 一个算术表达式,含有数字(为简化处理,数字只有一位),运算符:+.-.*,以及括号,求表达式的值. 给出的表达式是一 ...
- 中缀表达式变后缀分析
中缀表达式变后缀表达式 @(算法学习) 将中缀变为相应的后缀,需要根据的优先级来进行栈的变化. 具体操作是:我们用一个栈即可,存储的是符号栈,数字直接输出,因为符号输出顺序以及时机需要调整,因此用栈做 ...
- 顺序栈计算器 中缀转后缀表达式
顺序栈计算器 中缀转后缀表达式 前言 一.后缀表达式简述 二.参考书目中的函数实现 1.输入一个后缀表达式并计算 2.将中缀转后缀表达式 三.在原方法基础上改写并结合两个方法 1.输入一个后缀表达式并 ...
- 九度 1408 寻找表达式 (中缀转后缀)
题目描述 总结 1. '_' 运算符不是 a*10 + b, 而是 a*(10 or 100) + b 2. char * 与 string 的相互转化 char* = string.c_str() ...
最新文章
- 数据蒋堂 | “后半”有序的分组
- 学习率对神经网络的影响-乙烷,乙烯,乙炔的分子模型试验数据对比
- Bit-Z转入GXS、PPS、SPHTX、EOS未到账解决方案
- 搞定系统设计 00:开篇
- 暗黑破坏神(ssl 2295)
- 企业应用程序集成简介
- xadmin与mysql数据库_十八、Django3.0学习之引入xadmin
- sip中的100trying到底有啥用
- [07-01]http网页提示含义
- GLKVector3参考
- Linux系统启动需要多长时间,Linux系统启动时间的极限优化是怎样进行的?
- sklearn实现lasso regression以及调参
- iOS源码分析:Block的本质
- 网易云音乐encseckey算法php,网易云音乐热评api
- 服务器组态文件在哪里,组态王怎么读取服务器数据库
- 用极致业务基础平台研发的族谱管理软件
- 企业微信群机器人入门
- [工具(前端)] 后台管理模板
- 计算机二级python易错选择题汇总
- LUEVELSMEYER的PE文件格式
热门文章
- Solr4.3整合到Tomcat中并添加MMSeg4j中文分词器
- UIActionSheet的使用
- 分布式计算的程序设计,请各位帮忙看看有没有意见
- rabbitMQ:知识点
- Spring学习记录-Java 11运行eureka-server报javax.xml.bind.JAXBContext not present错
- 第一册:lesson forty three。
- WPF TreeView IsExpanded 绑定不上的问题
- 13. Roman to Integer
- 光信噪比 (OSNR) 的概念及其重要性
- 【python】yaml文件操作