代码写的比较烂,有时间再看看别人代码,重写一个好了。
#include<iostream>
#include<stack>
#include<map>
#include<queue>
#include<string>
using namespace std;
bool compare(char c, char c_in_stack){
if (c == '*' || c == '/'){
if (c_in_stack == '+' || c_in_stack == '-')
return true;
}
return false;
}
int main()
{
string s, revs;
map<char, int> variable_dic;
int variable_num;
cin >> s;
cin >> variable_num;
for (int i = 0; i < variable_num; i ++){
char c; int t;
cin >> c >> t;
variable_dic[c] = t;
}
//make the string to a RPN(reverse polish notation)
int length = s.length();
stack<char> trans;
for (int i = 0; i < length; i ++){
if (s[i] >= 'a' && s[i] <= 'z'){
revs.push_back(s[i]);
}
else if (s[i] == '(' || trans