1.判断表达式括号是否配对
#include <iostream>
#include <stack>
using namespace std;
bool isBalanced(const string& expression) {
const char left = '(', right = ')';
bool flag = true;
stack<char> chstack;
char ch;
for(int i = 0; i < expression.size(); i++) {
ch = expression[i];
if(ch == '(')
chstack.push(ch);
else if(ch == ')' && !chstack.empty())
chstack.pop();
else if(ch == ')' && chstack.empty()) {
flag = false;
break;
}
}
return (chstack.empty() && flag);
}
2.计算数值表达式
使用条件:(1)表达式使用全括号形式,中缀表达式 (2)表达式中只能出现‘+’、‘-’、‘*’、‘/'等二元操作符,不能出现取反等一元操作符,即为非负数
#include <iostream>
#include <stack>
#include <cctype>
using name