meili 发表于 2022-10-27 15:42:32

【假设表达式由单字母变量和双目四则运算算符构成.写一算法,将以正确的式子转换为逆波兰式】

<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]
查看完整版本: 【假设表达式由单字母变量和双目四则运算算符构成.写一算法,将以正确的式子转换为逆波兰式】