郁闷的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的字符串。表示这个表达式。这个表达式里仅仅包括+-*/与小括号这几种符号。当中小括号能够嵌套使用。数据保证输入的操作数中不会出现负数。

而且输入数据不会出现不匹配现象。

输出
每组输出都单独成行,输出转换的后缀表达式。
例子输入
2
1+2
(1+2)*3+4*5
例子输出
12+
12+3*45*+
AC码:
#include<stdio.h>
#include<string.h>
#define N 1003
int main()
{
int s,t,T,i,len;
char stack[N],str[N],ch[N];
scanf("%d",&T);
while(T--)
{
scanf("%s",str);
len=strlen(str);
s=-1;
t=0;
for(i=0;i<len;i++)
{
if(str[i]>='0'&&str[i]<='9')
{
ch[t]=str[i];
t++;
}
else if(str[i]=='(')
{
stack[++s]=str[i];
}
else if(str[i]==')')
{
while(s>=0&&stack[s]!='(')
{
ch[t]=stack[s];
t++; s--;
}
s--;
}
else if(str[i]=='/'||str[i]=='*')
{
while(stack[s]=='/'||stack[s]=='*')
{
ch[t]=stack[s];
t++;s--;
}
stack[++s]=str[i];
}
else
{
while(s>=0&&stack[s]!='(')
{
ch[t]=stack[s];
t++; s--;
}
stack[++s]=str[i];
}
}
while(s>=0)
{
ch[t]=stack[s];
t++;
s--;
}
ch[t]='\0';
printf("%s\n",ch);
}
return 0;
}



最新文章

  1. Ext之ExtGrid增删改查询回顾总结
  2. 可滑动的ExpandableListView
  3. vim黏贴代码格式混乱的解决方法
  4. Office Online简介
  5. 洛谷P2925 [USACO08DEC]干草出售Hay For Sale
  6. BUAA &amp; ICT 夏令营之旅
  7. uboot启动 及命令分析(3)
  8. 利用pl/sql developer进行远程连接oracle server出现的问题及解决办法
  9. 04_XML_01_入门基础
  10. Servlet程序开发-- servlet跳转
  11. 用C写的计算运行时间
  12. Spring 自带的定时任务Scheduled
  13. [Swift]LeetCode265.粉刷房子 II $ Paint House II
  14. 在阿里云 ECS 搭建 nginx https nodejs 环境 (一、 nginx)
  15. ASP.NET Core 1.1版本之Hello word
  16. VMware中虚拟机与主机不能ping通解决办法
  17. 常见Chrome 插件
  18. Win2003可用序列号(标准版与企业版)
  19. fidder及Charles使用
  20. HttpClient实战二:单线程和多线程连接池实例

热门文章

  1. 【原创】配置Windows Live Writer,写cnblogs博客
  2. Python的功能模块[3] -&gt; binascii -&gt; 编码转换
  3. Python实现微信小程序支付功能
  4. 分层图【p2939】[USACO09FEB]改造路Revamping Trails
  5. [LOJ6279]数列分块入门 3
  6. Flash3D学习计划(一)——3D渲染的一般管线流程
  7. iOS开发 Swift开发数独游戏(三) 选关界面
  8. SQL Server 2008 R2 Build List
  9. java随机打乱集合顺序
  10. DotnetBrowser高级教程-(5)使用内置的MVC UI框架-EasyMvc