1.特点:后进先出,插入和删除操作在一端进行
2.栈的成员函数:
empty() 堆栈为空则返回真
pop() 移除栈顶元素 (栈顶:允许进行插入和删除得到一端为栈顶)
size() 返回栈中元素数目
top() 返回栈顶元素
举个栗子:
#include <stack>
#include <iostream>
using namespace std;
int main()
{
stack<int> q; // 创建堆栈对象
// 元素入栈
s.push(1);
s.push(2);
s.push(3);
s.push(4);
s.push(5);
s.push(6);
// 元素依次出栈
while(!s.empty())
{
// 打印栈顶元素,打印出:6 5 4 3 2 1
cout << s.top() << endl;
// 出栈
s.pop();
}
return 0;
}
例题:
#include<stdio.h>
#include<string.h>
#include<stack>
using namespace std;
char a[110];
int main()
{
int t;
scanf("%d",&t);
getchar();
while(t--)
{
int flag=1;
stack<char>q;
gets(a);
for(int i=0; i<strlen(a); i++)
{
if(a[i]=='['||a[i]=='(')
q.push(a[i]);
else if(a[i]==']'&&!q.empty()&&q.top()=='[')
q.pop();
else if(a[i]==')'&&!q.empty()&&q.top()=='(')
q.pop();
else
flag=0;
}
if(flag&&q.empty())
printf("Yes\n");
else
printf("No\n");
}
}
Sample Input 3
([])
(([()])))
([()[]()])()
Sample Output
Yes
No
Yes