专栏首页前端儿中缀式变后缀式

中缀式变后缀式

中缀式变后缀式

描述

人们的日常习惯是把算术表达式写成中缀式,但对于机器来说更“习惯于”后缀式,关于算术表达式的中缀式和后缀式的论述一般的数据结构书都有相关内容可供参看,这里不再赘述,现在你的任务是将中缀式变为后缀式。

输入第一行输入一个整数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"string.h"
int youxianji(char a)
{
switch(a)
{
case '+':
case '-':return 1;break;
case '*':
case '/':return 2;break;
case '(':return 0;break;
default:return -1;break;






}



}





int main()
{
char caozuoshu[1000+10],houzui[1000+10],j[1000+10];
int i,k,n,t,top;
scanf("%d",&n);
while(n--)
{
scanf("%s",j);
t=strlen(j)-1; //去掉=号
caozuoshu[0]='#';
for(i=0,k=0,top=1;i<=t;i++)
{
if((j[i]>='0'&&j[i]<='9')||j[i]=='.')
houzui[k++]=j[i];
else if(j[i]=='(')
caozuoshu[top++]=j[i];
else if(j[i]==')')
{
top=top-1;
while(caozuoshu[top]!='(')
{
houzui[k++]=' ';
houzui[k++]=caozuoshu[top--];
}


}
else if(j[i]=='/'||j[i]=='*'||j[i]=='-'||j[i]=='+')
{
houzui[k++]=' ';
while(youxianji(j[i])<=youxianji(caozuoshu[top-1]))
{ 
houzui[k++]=caozuoshu[--top];
houzui[k++]=' ';
}

caozuoshu[top]=j[i];

top++;


}



}
top=top-1;
while(caozuoshu[top]!='#')
{

houzui[k++]=' ';
houzui[k++]=caozuoshu[top--];

}
houzui[k]=' ';
houzui[k+1]='=';
houzui[k+2]='\0';
printf("%s\n",houzui);




}









return 0;
}



//转        

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ES6笔记(7)-- Promise异步编程

    Promise是一种异步编程的解决方案,本质来说其实它是一种规范,Promises/A+规范

    书童小二
  • npm包与gem包--在线&离线安装

    NPM,即为Node的包管理工具,官网为 https://www.npmjs.com/,我们可以在站内搜索所需要的NPM包,了解相关的使用规则

    书童小二
  • A problem is easy

    When Teddy was a child , he was always thinking about some simple math problems ...

    书童小二
  • 【DB笔试面试841】在Oracle中,如何跟踪tnsping过程?

    sqlnet是oracle提供的与网络层面交互的一个工具,比如如何解析客户端发起的连接,如何对客户端发起的连接进行辨别,如何对客户端连接进行阻隔限制,或者启用日...

    小麦苗DBA宝典
  • NSCharacterSet类在分割字符串中的应用

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

    用户1451823
  • 测试前移之需求合理性验证

    有一次在使用时,我好奇的点了点几个入口,突然发现匿名的内容和实名确认名单,可以通过时间线进行关联,我简直惊呆了。

    sylan215
  • Kyma - 轻松扩展和构建Kubernetes

    根据最近完成的CNCF调查,云原生技术在生产中的采用率正在快速增长。Kubernetes是这场技术革命的核心。云原生技术的增长自然地伴随着围绕它的生态系统的增长...

    CNCF
  • 撮合引擎开发:解密黑箱流程

    前面的几篇文章已经陆续讲到了黑箱内部的一些设计,包括核心的软件结构、数据结构、目录结构等。而从本小节开始,我们将会更加深入,来解密黑箱内部的更多设计和实现细节。

    Keegan小钢
  • SuperNAP数据中心揭秘——中

    image.png 前面介绍了switch通信数据中心的总体设计思路,下面再介绍其数据中心内核心的IT微模块,根据图6所示的IT微模块示意及相关专利介绍称,其...

    腾讯数据中心
  • 树莓派推出滑动式键盘笔记本,可以通过编程DIY自己的电脑 | 酷玩

    镁客网

扫码关注云+社区

领取腾讯云代金券