B3614 【模板】栈 题解

感觉用手工栈更简单。

思路:

本蒟蒻不会用STL,所以只提供手工写法。

这样本题就变成模拟了。

要注意的是要用 unsigned long long,否则会 WA 两个点。

思路写成注释放代码了:

#include<bits/stdc++.h>
using namespace std;
unsbigned long long b[1145141],t,n,x,jj=1;//jj是栈顶,b是手工栈 
string a;
int main(){
	cin>>t;
	for(int i=1;i<=t;i++){
		cin>>n;
		for(int j=1;j<=n;j++){
			cin>>a;
			if(a=="push"){
				cin>>x;
				b[jj]=x;
				jj++;//栈顶往上移 
			}
			if(a=="pop"){
				if(jj>1){//如果栈非空 
					b[jj-1]=0;//栈顶减一才是栈顶元素 
					jj--;
				}
				else{
					cout<<"Empty"<<'\n';
				}
			}
			if(a=="query"){
				if(jj>1){
					cout<<b[jj-1];//输出栈顶元素 
				}
				else cout<<"Anguei!"<<'\n';
			}
			if(a=="size"){
				cout<<jj-1<<'\n';//输出元素个数 
			}
		}
		memset(b,0,sizeof(b));//最后别忘了清空 
		jj=1;//栈顶还原 
	}
	return 0;
}

完结撒花!!!

posted @ 2023-11-23 18:56  IOI_official  阅读(493)  评论(0)    收藏  举报  来源