解题思路:
这道题用堆栈来解比较方便。设置操作符优先级,将中缀表达式转后缀表达式,然后计算后缀表达式。
代码:
#include<bits/stdc++.h>
using namespace std;
struct node{
int num;//操作数
char op;//操作符
bool flag;//true表示操作数,false表示操作符
};
string str;
stack<node> s;//保存操作符
queue<node> q;//保存后缀表达式
map<char,int> op;//对应操作符及其优先级
//将中缀表达式转换为后缀表达式
void Change(){
int num;
node temp;
for(int i=0;i<str.length();){
if(str[i]>='0'&&str[i]<='9'){
//是数
temp.flag=true;
temp.num=str[i++