输入一个数n,由1~n顺序进栈,输入一列栈顺序,如何能够实现这种出栈顺序,那么输出yes 否则输出no
#include<iostream>
#define MaxSize 1001
using namespace std;
int data[1001];
struct Sqstack
{
int data[MaxSize];
int top;
}st;
void init()
{
st.top=-1;
}
void pop()
{
if(st.top!=-1)
st.top--;
else
cout<<"下溢出"<<endl;
}
void push(int a)
{
if(st.top!=MaxSize-1)
{
st.top++;
st.data[st.top]=a;
}
else
cout<<"上溢出"<<endl;
}
bool empty()
{
return st.top==-1;
}
int top()
{
return st.data[st.top];
}
void clear()
{
while(!empty())
pop();
}
int main()
{
int N;
while(cin>>N&&N)
{
while(cin>>data[1]&&data[1])
{
init();
for(int i=2;i<=N;i++)
cin>>data[i];
int i=0,j=1;
do
{
if(empty()&&i<N)
{
push(++i);
}
if(empty()&&i==N)break;
int q = top();
if(data[j]!=top()&&i<N)
{
push(++i);
}
else if(data[j]==top())
{
pop();
j++;
}
}
while(i!=N||data[j]==top());
if(empty())cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
cout<<endl;
}
}
while循环退出的条件是0,如果两个条件都同时为0时退出,只要有一个为1继续循环,那么用或逻辑运算符运算