做短链的网站,跨境电商物流模式主要有哪些,app store怎么退款,郑州专业做淘宝网站建设一、问题概述#xff1a;
人们经常书写的数学表达式属于中缀表达式#xff0c;今天要解决的是#xff0c;后缀表达式的求解问题。
如下图分别为举例的中缀表达式和后缀表达式#xff1a; 二、解决思路
我们用栈存储后缀表达式中的数据部分#xff0c;当遇到操作符时就取…一、问题概述
人们经常书写的数学表达式属于中缀表达式今天要解决的是后缀表达式的求解问题。
如下图分别为举例的中缀表达式和后缀表达式 二、解决思路
我们用栈存储后缀表达式中的数据部分当遇到操作符时就取出栈中的栈顶两个元素检测操作符的类型并进行相应的计算这里要注意的是对于除法运算栈顶的两个元素的位置得区分。
如下所示 三、实现代码 //Expression.h #pragma once
#includestack
#includeassert.henum Type
{OP_SYMBOL,OP_NUM,ADD,SUB,MUL,DIV
};struct Cell
{Type _type;int _value;
};void FunTest()
{Cell RPN[] {{OP_NUM,12},{OP_NUM,3},{OP_NUM,4},{OP_SYMBOL,ADD},{OP_SYMBOL,MUL},{OP_NUM,6},{OP_SYMBOL,SUB},{OP_NUM,8},{OP_NUM,2},{OP_SYMBOL,DIV},{OP_SYMBOL,ADD}};stackint s;for(size_t i 0; i sizeof(RPN)/sizeof(RPN[0]);i){if(RPN[i]._type OP_NUM){s.push(RPN[i]._value);}else if(RPN[i]._type OP_SYMBOL){int second s.top();s.pop();int first s.top();s.pop();switch(RPN[i]._value){case ADD:s.push(firstsecond);break;case SUB:s.push(first-second);break;case MUL:s.push(first*second);break;case DIV:s.push(first/second);break;default:assert(false);}}else{assert(false);}}couts.top()endl;
}//Expression.cpp#define _CRT_SECURE_NO_WARNINGS 1
#includeiostream
using namespace std;
#includeExpression.hint main()
{FunTest();return 0;
}后缀表达式就说到这里喽有需要改进得地方欢迎提出宝贵意见哦。