美文网首页
从中缀向后缀转换表达式

从中缀向后缀转换表达式

作者: SummerC0ld | 来源:发表于2017-04-06 15:22 被阅读0次

C实现

#include "stdio.h"
#include "string.h"
#include "stdlib.h"
typedef struct stack
{
  char *base;
  char *top;
} stack;
int pre(char sign)
{
  switch (sign)
     
    {
    case '+':
    case '-':
        return 1;
        break;
    case '*':
    case '/':
        return 2;
        break;
    case '^':
        return 3;
        break;
    default:
        return 0;
        break;
       
    }
}
int main()
{
  stack sign;
  int n, i;
  char expre[100];
  scanf("%d", & n);
  while (n--)
     
    {
        sign.base = (char *)malloc(100 * sizeof(char));
        sign.top = sign.base + 1;
        *sign.base = '#';
        scanf("%s", expre);
        for (i = 0; expre[i] != '#'; i++) 
      {
           if (expre[i] == '(') 
        {
              *sign.top++ = expre[i];
             
        }
           else if (expre[i] == ')')
        {
              while (*(sign.top - 1) != '(') 
          {
                 printf("%c", * (sign.top - 1));
                 sign.top--;
                
          }
              sign.top--;
             
        }
           else if (expre[i] == '+' || expre[i] == '-' || expre[i] == '*' || expre[i] == '/' || expre[i] == '^')
        {
              while (((*(sign.top - 1) == expre[i]) && (expre[i] == '^')) ? (pre(*(sign.top - 1)) > pre(expre[i])) : (pre(*(sign.top - 1)) >= pre(expre[i]))) 
          {
                 printf("%c", * (sign.top - 1));
                 sign.top--;
                
          }
              *sign.top++ = expre[i];
             
        }
           else printf("%c", expre[i]);
          
      }
        while (sign.top != sign.base + 1) 
      {
           printf("%c", * (sign.top - 1));
           sign.top--;
          
      }
        printf("\n");
       
    }
  return 0;
}

相关文章

  • 表达式树

    表达式树中缀表达式转换为后缀表达式后缀表达式总结

  • 栈的应用

    中缀表达式转换为后缀表达式 后缀表达式 做数学运算时,经常使用的是中缀表达式,即“操作数 运算符 操作数”。在计算...

  • 四则运算(JAVA)

    计算过程 1.将四则运算串分割出中缀表达式2.将中缀表达式转换为后缀表达式3.对后缀表达式进行求值得出结果

  • 四则运算表达式求值

    利用栈求解四则运算:求解思路为先将中缀表达式转换为后缀表达式,再利用后缀表达式求解中缀表达式:运算符出现在两个数字...

  • 逆波兰计算器

    中缀表达式转换成后缀表达式 后缀表达式的计算 逆波兰计算器 先挖坑,学年设计之后再来填坑。

  • [堆栈] 前, 中, 后缀表达式

    将中缀表达式转换成后缀表达式(逆波兰式), 便于计算机的计算.

  • 堆栈

    堆栈中常见的问题: 问题1: 后缀表达式怎么计算?问题2: 中缀表达式怎么转换成后缀表达式?问题3: 回溯算法问题...

  • 中缀表达式转后缀表达式并求值

    1.什么是中缀表达式?中缀表达式示例 2.什么是后缀表达式?后缀表达式示例 3.代码

  • 7.19-经典难问题总结

    1. 前缀,后缀和中缀之间相互转换 中缀表示转前缀/后缀(附代码)针对负数的情况前缀/中缀/后缀相互转换 2. T...

  • C语言中缀表达式计算器

    本文将介绍中缀表达式计算器的详细写法,是 C语言把中缀表达式转换为后缀表达式 和 C语言逆波兰计算器 的结合 ...

网友评论

      本文标题:从中缀向后缀转换表达式

      本文链接:https://www.haomeiwen.com/subject/hbrqattx.html