65.9K
CodeProject 正在变化。 阅读更多。
Home

从中缀表达式创建后缀表达式。

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.67/5 (14投票s)

2006 年 8 月 20 日

2分钟阅读

viewsIcon

65224

downloadIcon

874

本文介绍了如何从中缀表达式创建后缀表达式。

引言

Ali reza zareian。

这是一个简单的程序,用于从中缀表达式创建后缀表达式。什么是中缀表达式?

 

 (a+b)/d 就是一个简单的例子。中缀表达式在数学中很常见。这意味着当你想计算它时,你必须

首先将 a 与 b 相加,然后除以 d。

如果我们将这个表达式转换为后缀表达式。我们得到 ab+d/。

后缀表达式有什么用?

 首先,我们不需要括号。其次,我们可以编写一个程序来计算这个表达式,这比中缀表达式更容易。

 

这个程序是什么?

 这个程序使用一个简单的算法将中缀表达式转换为后缀表达式。只需看例子

在开始之前,我应该说我在这个程序中使用了堆栈。

 

中缀表达式 = (a+b)/d 

 

 

输入     堆栈        输出

(             (

a            (                     a

+           (+                   a

b           (+                   ab

)                                  ab+

/            /                     ab+

d                                 ab+d

没有         空           ab+d/

 

  

这个程序的主要方法是什么!?

1)      private int isOperand(char  chrTemp);

2)      private int isOperator(char chrTemp);

3)      public string createPrifex();

 

 

1) isOperand 检查字符是否在这个集合中。{'*','/','+','-','^','('}

      如果为真,我们将这个字符添加到堆栈中。

 

2) isOperator 检查字符是否在这个集合中。{'*','/','+','-','^'}

    这个方法检查堆栈,并弹出除了 '(' 之外的所有运算符。

 

3) createPrifix 方法使用 isOperand 和 isOperator 从中缀表达式创建后缀表达式。

 

伪代码

  

 对于(第一个中缀字符)到最后一个字符

{

   如果(是操作数)添加到堆栈

   否则

   如果(它是 ')')弹出堆栈并将其发送到输出

否则将其他字符发送到输出

}

 

}

  

 

 

 

 

 

 

© . All rights reserved.