栈,使用时需要加头文件statck。特点:栈中的数据是后进先出。
成员函数:
s.top();返回栈顶元素
s.push();压栈
s.pop();出栈
s.size();返回栈的大小,即栈中有多少个元素
s.empty();判断栈是否为空
下面就通过简单易懂的代码对其讲解
///括号匹配问题
#include <iostream>
#include <stack>
using namespace std;
// 判断字符是不是左括号类型
bool isLeft(char c)
{
return (c == '(' || c == '[' || c == '{');
}
// 判断右括号与左括号是否匹配
bool isMatch(char right, char left)
{
if (right == ')')
{
return (left == '(');
}
if (right == ']')
{
return (left == '[');
}
if (right == '}')
{
return (left == '{');
}
}
// 判断字符串是否匹配
bool matching(char* s)
{
stack<char> cs;
char c;
while (*s)
{
c = *s;
if (isLeft(c))
{
cs.push(c);
}
else
{
if (cs.empty() || !isMatch(c, cs.top()))
{
return false;
}
cs.pop();
}
++s;
}
if (!cs.empty())
{
return false;
}
return true;
}
int main()
{
char s[] = "{{[]({})}}";
if (matching(s))
{
cout << s << "是匹配的。" << endl;
}
else
{
cout << s << "是不匹配的。" << endl;
}
return 0;
}