📅  最后修改于: 2023-12-03 15:22:23.416000             🧑  作者: Mango
在编写程序时,经常需要检查表达式中括号是否成对出现。为此,我们可以使用堆栈来实现检查。下面是一个用C++编写的,使用堆栈检查表达式中平衡括号的程序。
#include <iostream>
#include <stack>
#include <string>
using namespace std;
bool balanced(string exp) {
stack<char> s;
for (int i = 0; i < exp.length(); i++) {
char c = exp[i];
if (c == '(' || c == '[' || c == '{') {
s.push(c);
} else if (c == ')' || c == ']' || c == '}') {
if (s.empty()) {
return false;
}
char top = s.top();
s.pop();
if (c == ')' && top != '(') {
return false;
} else if (c == ']' && top != '[') {
return false;
} else if (c == '}' && top != '{') {
return false;
}
}
}
return s.empty();
}
int main() {
string exp = "([]{})";
if (balanced(exp)) {
cout << "Balanced" << endl;
} else {
cout << "Not balanced" << endl;
}
return 0;
}
这个程序首先定义了一个balanced
函数用于检查表达式中的括号是否平衡。该函数使用了一个stack来保存左括号,并按照顺序在遇到右括号时弹出左括号。如果最后栈为空,则表达式中的括号是平衡的。
在main
函数中,定义了一个表达式exp
,并使用balanced
函数来检查它是否平衡。
在本程序中,我们可以看到用到了stack的相关知识,同时也用到了字符串的一些操作。这个程序可以作为一个简单的堆栈练习程序,也可以在实际工作中使用来检查表达式中的括号是否平衡。