使用C++代码实现逆波兰式的方法-创新互联

使用C++代码实现逆波兰式的方法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

创新互联是一家集网站建设,长葛企业网站建设,长葛品牌网站建设,网站定制,长葛网站建设报价,网络营销,网络优化,长葛网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

100行以内C++代码实现逆波兰式

逆波兰式(Reverse Polish notation,RPN,或逆波兰记法),也叫后缀表达式(将运算符写在操作数之后)。

算术表达式转逆波兰式例子:

使用C++代码实现逆波兰式的方法

逆波兰式整体的算法流程图如下:

使用C++代码实现逆波兰式的方法

下面给出我基于C++ 语言对逆波兰式算法的实现代码,值得注意的是:

1、算法中对操作数,仅支持一个字符的字母或数字的操作数,如:x,y,j,k,3,7等;如果要支持多个字符的操作数,如:var1,3.14等。需要读者自己扩展对算术表达式操作数的分词部分的代码。


2、为了为了增加转换后的逆波兰表达式的可读性,我在每个操作数和操作符输出时后面追加了一个空格。


代码如下:

/// file: ReversePolishNotation.h
#include 
#include 

class ReversePolishNotation {
private:
 std::string _expr;
 unsigned _idx;
 std::stack _stk;
public:
 ReversePolishNotation(const std::string &expr);

 std::string nextWord();

 std::string operator()();

 static int getOpPriority(const std::string &word);

 bool isWord(const std::string &word);

 bool isOperator(const std::string &word);
};

标题名称:使用C++代码实现逆波兰式的方法-创新互联
文章起源:http://pwwzsj.com/article/cejeec.html