• 大小: 3KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-01-08
  • 标签: 逆波兰式  

资源简介

使用逆波兰式的方式进行表达式求值。在控制台下可进行多组数据的输入处理。

资源截图

代码片段和文件信息

#include 
#include 
#include 

using namespace std;

//比较lhs的优先级是否不高于rhs,rhs表示栈顶的符号
bool priority(char lhschar rhs)
{
if (rhs==‘(‘)
return false;
if (lhs==‘+‘||lhs==‘-‘)
return true;
if ((lhs==‘*‘||lhs==‘/‘)&&(rhs==‘*‘||rhs==‘/‘))
return true;
return false;
}

//将中缀表达式转换成后缀式
string inPrefix2postPrefix(string str)
{
string res;//后缀表达式结果
stack s;
for (int i=0;i {
//如果是数字,直接加入后缀表达式结果中
if (isdigit(str[i]))
{
while (i {
res+=str[i];
i++;
}
i--;//注意这里要将i减1,因为上面的循环将i多右移了一位,如果不减1,会漏掉一位
res+=“ “;
}
else //如果是符号,需要与栈顶的元素进行比较
{
 //如果栈为空,将其直接压入栈中;如果是左括号(,也直接将其压入栈中
if (s.empty()||str[i]==‘(‘)
s.push(str[i]);
else

评论

共有 条评论