栈的特点就是先进的后出,后进的先出。
stack(栈)的常用函数:
stack< int > a : 创建一个空的堆栈对象a
push () : 插入新元素(入栈)
pop () : 删除栈中的栈顶元素(出栈)
top () : 栈顶元素
empty () : 检测stack内是否为空,若为空返回true,否则返回false
size () : 返回stack内元素的个数
题目
~~~
Sample Input
5 3 4 2 1 5 5 3 5 1 4 2 0
Sample Output
Yes No
~~~
#include<bits/stdc++.h>
using namespace std;
stack<int>a;//创建一个空的堆栈对象a
int main()
{
int n,q;
while(scanf("%d",&n)&&n!=0){//输入的数不等于0,就继续循环
while(!a.empty())//堆栈不为空,删除顶部元素
a.pop();
int tip=1,b[1000],flag=0;
for(q=0;q<n;q++)//输入要判断的数
scanf("%d",&b[q]);
for(q=0;q<n;q++){
if(b[q]>=tip){//如果要入栈的数大于顶部的数,就将小于b[q]的数依次入栈
for(int i=tip;i<b[q];i++)
a.push(i);//入栈
tip=b[q]+1;
}
else{
if(a.top()==b[q]) a.pop();//如果栈顶元素等于要入栈的数,就将其删掉
else{printf("No\n");flag=1;break;}//否则出栈序列就不合理
}
}
if(flag==0) printf("Yes\n");
}
}