俗话说得好,要达到顶峰一定要从简单开始,第一篇题解就决定是你了!!![狗头]
那么先来读题目:
要模拟一个支持四种操作的队列
(1) “push x” – 向栈顶插入一个数x;
(2) “pop” – 从栈顶弹出一个数;
(3) “empty” – 判断栈是否为空;
(4) “query” – 查询栈顶元素。
//(4)就可以看作为top
然后要进行M次操作····
我刚一看到题目就乐呵了,直接定义一个栈来进行这些操作不就完了么
说什么模拟栈呢,考noi,noip的时候你会定义一个数组来模拟一个栈啊?
一定不会的吧,所以想看定义数组的做法的同学
请立刻离开本题解·····(真是良心呢!)
做法:那我们就开始这种“歪门邪道”的做法。
刚开始呢,以为一路畅通无阻,向胜利驶去
但是我蓦然回首,发现最开始代表操作的字符串不会读入
但是我下一秒就想出了解法,具体内容代码里见吧
代码:最后的最美好的时光
#include[HTML_REMOVED]
using namespace std;
int n,x;
string a;
stack [HTML_REMOVED] q;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a;
//就只有pop和push首字母相同
//所以判断a[0]和a[1],别的只判断a[0]就行了
if(a[0]==’p’&&a[1]==’u’){
cin>>x;
q.push(x);
}if(a[0]==’p’&&a[1]==’o’){
q.pop();
}if(a[0]==’e’){
if(q.empty()){
cout<<”YES”<<endl;
}else{
cout<<”NO”<<endl;
}
}if(a[0]==’q’){
int z=q.top();
cout<<z<<endl;
}
}
return 0;
}
结束 GAME OVER
不喜勿喷