【假设表达式由单字母变量和双目四则运算算符构成.写一算法,将以正确的式子转换为逆波兰式】
<p>问题:【假设表达式由单字母变量和双目四则运算算符构成.写一算法,将以正确的式子转换为逆波兰式】<p>答案:↓↓↓<p class="nav-title mt10" style="border-top:1px solid #ccc;padding-top: 10px;">靳彦青的回答:<div class="content-b">网友采纳 char*RPExpression(char*e) /*返回表达式e的逆波兰式*/ { charm='0'; char*b; Stacks; staticchara; 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); } if(m=='('||m=='0') Push(s,m); } 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; } }
页:
[1]