算法
1.建立一个栈
2.遍历字符串:
2.1如果当前元素为操作符就从栈中弹出两个操作数o1,o2进行运算o2.operator(o1),并将结果压栈
2.2如果当前元素为操作数直接压栈
代码
string int2string(int a)
{
stringstream ss;
ss<<a;
string resault;
ss>>resault;
return resault;
}
int caculate(vector<string>& str)
{
//1.建立一个栈
Stack<int> s;
//2.遍历字符串
int o1;
int o2;
int resault;
for(int i=0;i<str.size();i++)
{
//2.1如果当前元素为操作符则从栈中先后弹出两个操作数o1,o2.并做对应的运算o2.operator(o1),并将结果再压入栈中
if(str[i] == "+" || str[i] == "-" || str[i] == "*" || str[i] == "/"){
if(str[i] == "+"){
o1 = s.pop();
o2 = s.pop();
resault = o2+o1;
s.push(resault);
}
else if(str[i] == "-"){
o1 = s.pop();
o2 = s.pop();
resault = o2-o1;
s.push(resault);
}
else if(str[i] == "*"){
o1 = s.pop();
o2 = s.pop();
resault = o2*o1;
s.push(resault);
}
else if(str[i] == "/"){
o1 = s.pop();
o2 = s.pop();
resault = o2/o1;
s.push(resault);
}
}
//2.2如果是操作数就压栈
else{
s.push(string2int(str[i]));
}
}
//3.遍历结束后将栈中的内容弹出就是运算结果
return s.pop();
}