#include<iostream>
#include<vector>
#include<stack>
#include<string>
#include<map>
using namespace std;
map<char,int> level;
void init()
{
level['+']=0;
level['-']=0;
level['*']=1;
level['/']=1;
level['(']=2;
level[')']=2;
}
string tran(const string &arr)
{
init();
string result;
stack <char> s;
for(auto &e:arr){
if(e<='z'&&e>='a')
result.push_back(e);
else if(e==')'){
while(s.top()!='('){
result.push_back(s.top());
s.pop();
}
s.pop();
}else{
while(!s.empty()&&s.top()!='('&&level[e]<level[s.top()]){
result.push_back(s.top());
s.pop();
}
s.push(e);
}
}
while(!s.empty()) {
result.push_back(s.top());
s.pop();
}
return result;
}
中缀表达式转换成后缀表达式
最新推荐文章于 2020-05-25 20:26:59 发布