栈的应用,
用数组
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
int main()
{
int i,j,stack[1005],a[1005],n,top;
while(scanf("%d",&n)&&n)
{
while(scanf("%d",&a[0])&&a[0])
{
top=-1;
for(i=1;i<n;i++)
scanf("%d",&a[i]);
i=0;
j=1;
while(i<n)
{
if(a[i]==j)
{
i++;
j++;
}
else if(top>=0&&stack[top]==a[i])
{
top--;
i++;
}
else if(j<=n)
{
top++;
stack[top]=j;
j++;
}
else break;
}
if (i == n)
printf("Yes\n");
else
printf("No\n");
}
printf("\n");
}
return 0;
}