「已注销」 2017-06-15 15:21 采纳率: 50%
浏览 1111
已采纳

中缀表达式转后缀表达式,什么问题?

#include
#include
typedef struct
{
char base;
char *top;
int stacksize;
}SqStack;
char InitStack(SqStack &S)
{
S.base=new char[100];
S.top=S.base;
S.stacksize=100;
}
char Push(SqStack &S,char e)
{
*S.top=e;
S.top++;
}
char Pop(SqStack &S)
{
char e;
e=
(S.top-1);
S.top--;
return e;
}
int bj(char a,char b)
{
if(a=='(')
return 0;
else if(a=='*'||a=='/')
return 1;
else
{
if(b=='+'||b=='-')
return 1;
else
return 0;
}
}
int main()
{
SqStack s;
InitStack(s);
char q[200];
int i,j;
gets(q);
j=strlen(q);
for(i=0;i {
if((q[i]='a')||(q[i]<='Z'&&q[i]>='A'))
printf("%c",q[i]);
else if(q[i]=='+'||q[i]=='-'||q[i]=='*'||q[i]=='/')
{
if(s.top==s.base)
Push(s,q[i]);
else
{
if(bj(*(s.top-1),q[i])==1)
{
printf("%c",Pop(s));
}
if(bj(*(s.top-1),q[i])==1)
{
printf("%c",Pop(s));
}
Push(s,q[i]);
}
}
else if(q[i]=='(')
{
Push(s,q[i]);
}
else
{
while(*(s.top-1)!='(')
printf("%c",Pop(s));
if(*(s.top-1)=='(')
Pop(s);
}
}
while(s.top!=s.base)
printf("%c",Pop(s));
return 0;
}

  • 写回答

3条回答 默认 最新

  • shen_wei 2017-06-16 07:11
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如果要做一个老年人平板有哪些需求
  • ¥15 k8s生产配置推荐配置及部署方案
  • ¥15 matlab提取运动物体的坐标
  • ¥15 人大金仓下载,有人知道怎么解决吗
  • ¥15 一个小问题,本人刚入门,哪位可以help
  • ¥15 python安卓开发
  • ¥15 使用R语言GD包一直不出结果
  • ¥15 计算机微处理器与接口技术相关问题,求解答图片的这个问题,有多少个端口,端口地址和解答问题的方法和思路,不要AI作答
  • ¥15 如何根据一个截图编写对应的HTML代码
  • ¥15 stm32标准库的PID角度环