博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NYOJ--257--郁闷的C小加(一)(中缀表达式变后缀表达式 )
阅读量:5133 次
发布时间:2019-06-13

本文共 1763 字,大约阅读时间需要 5 分钟。

郁闷的C小加(一)

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
 
描述

我们熟悉的表达式如a+b、a+b*(c+d)等都属于中缀表达式。中缀表达式就是(对于双目运算符来说)操作符在两个操作数中间:num1 operand num2。同理,后缀表达式就是操作符在两个操作数之后:num1 num2 operand。ACM队的“C小加”正在郁闷怎样把一个中缀表达式转换为后缀表达式,现在请你设计一个程序,帮助C小加把中缀表达式转换成后缀表达式。为简化问题,操作数均为个位数,操作符只有+-*/ 和小括号。

 
输入
第一行输入T,表示有T组测试数据(T<10)。
每组测试数据只有一行,是一个长度不超过1000的字符串,表示这个表达式。这个表达式里只包含+-*/与小括号这几种符号。其中小括号可以嵌套使用。数据保证输入的操作数中不会出现负数。并且输入数据不会出现不匹配现象。
输出
每组输出都单独成行,输出转换的后缀表达式。
样例输入
21+2(1+2)*3+4*5
样例输出
12+12+3*45*+

中缀式变后缀式

思路:从左到右扫描表达式,若为操作数,直接输出,若为操作符,则样将当前操作符和操作符栈的栈顶操作符进行优先级比较。

(1).若当前操作符优先级大于操作符栈的栈顶操作符,则将当前操作符压入操作符栈中;

(2)若当前操作符优先级等于操作符栈的栈顶操作符,则将当前操作符栈的栈顶的操作符出栈;

(3)若当前操作符优先级小于操作符栈的栈顶操作符,则将当前操作符栈的栈顶的操作符输出,拿当前操作符重继续执行这三步。

1 /* 2     Name: NYOJ--257--郁闷的C小加(一) 3     Copyright: ©2017 日天大帝 4     Author: 日天大帝  5     Date: 04/05/17 10:11 6     Description: 中缀表达式变后缀表达式  7 */ 8 #include
9 #include
10 #include
11 using namespace std;12 char judge(char s,char ch) {13 if(s == '+' || s== '-'){14 if(ch == '*' || ch == '/' || ch == '(')return '<';15 else return '>';16 }17 if(s == '*' || s == '/'){18 if(ch == '(')return '<';19 else return '>';20 }21 if(s == ')')return '>';22 if(s == '(' || s== '#'){23 if(s == '('&& ch == ')' || s == '#' && ch == '#')return '=';24 else return '<';25 }26 }27 int main(){28 ios::sync_with_stdio(false);29 30 int n;cin>>n;31 while(n--){32 string str;cin>>str;33 str += '#';34 stack
s;35 s.push('#');36 for(int i=0; i
':{52 char c = s.top();s.pop();53 cout<

 

转载于:https://www.cnblogs.com/evidd/p/6807405.html

你可能感兴趣的文章
【123】
查看>>
《收获,不止Oracle》pdf
查看>>
用户权限设置
查看>>
java 之equals与"=="的区别
查看>>
LinkedList<E>源码分析
查看>>
学习微软 Excel 2002 VBA 编程和XML,ASP技术
查看>>
游戏开发常用算法
查看>>
Real-Time Rendering 笔记
查看>>
如何理解HTML结构的语义化
查看>>
Intellij IDEA(eclipse设置)常用快捷键
查看>>
深入理解Java:注解(Annotation)基本概念
查看>>
NAT基本原理
查看>>
Java Content Repository API 简介 转自(https://www.ibm.com/developerworks/cn/java/j-jcr/)
查看>>
visio二次开发——图纸解析
查看>>
Activity之间的跳转:
查看>>
iTunes Connect 开发者上手经验(转)
查看>>
vertical-align你为什么不生效
查看>>
C++ 实践总结
查看>>
composer 国内镜像配置
查看>>
软件是天时、地利、人和的产物!
查看>>