【假设表达式由单字母变量和双目四则运算算符构成.写一算法,将以正确的式子转换为逆波兰式】
假设表达式由单字母变量和双目四则运算算符构成.写一算法,将以正确的式子转换为逆波兰式
【假设表达式由单字母变量和双目四则运算算符构成.写一算法,将以正确的式子转换为逆波兰式】
假设表达式由单字母变量和双目四则运算算符构成.写一算法,将以正确的式子转换为逆波兰式
char*RPExpression(char*e)
/*返回表达式e的逆波兰式*/
{
charm='0';
char*b;
Stacks;
staticchara[100];
b=a;
InitStack(s);
Push(s,m);
if(*e)
{
while(*e)
{
switch(*e)
{
case'(':
{
Push(s,*e);
break;
}
case'+':
case'-':
{
m=Top(s);
if(m=='+'||m=='-')
{
Pop(s,m);
*b++=m;
}
elseif(m=='*'||m=='/')
{
Pop(s,m);
while(m!='('&&m!='0')
{
*b++=m;
Pop(s,m);
}
[u]if(m=='('||m=='0')
Push(s,m);[/u]
}
Push(s,*e);
break;
}
case'*':
case'/':
{
m=Top(s);
if(m=='('||m=='+'||m=='-'||m=='0')
{
Push(s,*e);
}
elseif(m=='*'||m=='/')
{
Pop(s,m);
*b++=m;
if(m=='('||m=='0')
Push(s,m);
Push(s,*e);
}
break;
}
case')':
{
Pop(s,m);
while(m!='(')
{
*b++=m;
Pop(s,m);
}
break;
}
default:
{
*b++=*e;
break;
}
}
e++;
}
Pop(s,m);
while(m!='0')
{
*b++=m;
Pop(s,m);
}
*b='';
b=a;
returnb;
}
}