首页 > 解决方案 > C中的后缀到中缀转换

问题描述

任何人都可以帮助我在 C 中进行 Postfix 到 Infix 的转换,我尝试了几次,但仍然无法弄清楚逻辑。

我知道算法,它类似于:

#include<stdio.h>

char st[100];
int top = -1;

void push(char el)
{
  st[++top] = el; 
}

char pop()
{
  return st[top--];
}

int isop(char val)
{
  if (val == '+' || val == '-' || val == '*' || val == '/' || val == '%')
  {
    return 1;
  } else {
    return 0;
  }
}
void main()
{
  char exp[50], v1, v2, ex;
  int i = 0;

  printf("Enter the expression: ");
  gets(exp);

  while(exp[i] != '\0')
  {
    if(isop(exp[i]))
    {
      v1 = pop();
      v2 = pop();
      ex = exp[i];

    } else {
      push(exp[i]);
    }
    i++;
  }
}

我唯一陷入困境的地方是,我将如何将结果表达式(通过将运算符放在两个弹出的操作数之间获得的表达式)再次推入堆栈。

谢谢。

标签: cdata-structuresstackpostfix-notation

解决方案


推荐阅读