【假设表达式由单字母变量和双目四则运算算符构成.写一算法,将-查字典问答网
分类选择

来自贺一的问题

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

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

1回答
2020-12-27 06:59
我要回答
请先登录
靳彦青

  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;

  }

  }

2020-12-27 07:02:33

最新问答

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •