Rails stack

输入一个数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继续循环,那么用或逻辑运算符运算

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值