模拟队列操作题解
2024-07-18 19:28:39
发布于:浙江
8阅读
0回复
0点赞
入队:添加到队列的末尾。
输出:移除如果队列为空,则操作非法。
访问队首(Peek):查看但不移除队首元素,如果队列为空,则操作非法。
题目要求我们根据给定的操作输出结果或“impossible!”。我们需要用C来实现这个功能步骤:
初始化:(可以使用C的std::queue容器),并准备一个变量来跟踪当前的操作计数n。
读取操作数:读取输入的第一个整数n,表示接下来会有n次操作。
循环处理操作:对于每个操作(共n个):
读取操作类型(1, 2, 或 3)和可能的参数(如入队或访问队首时的数字)。
据操作类型执行相应的操作:
操作1(入队):将参数值入队。
操作2(出队):如果队列非空,出队;否则,输出"impossible!"。
-访问队首)非空,输出队首元素;否则,输出"4. 输出结果:在每个操作3(访问队首)在这个过程中,我们可以利用C++的`来方便地处理队列操作,同时注意边界条件,例如队列为空时执行出队或访问队首操作。
#include<bits/stdc++.h>
using namespace std;
int a[1000005];
int w=0,s=1,ss=1;
int main(){
int n,s,m;
cin>>n;
for(int i=1;i<=n;i++){
cin>>s;
if(s==1){
cin>>m;
w++;
a[w]=m;
}
if(s==2){
if(w==0){
cout<<"impossible!"<<endl;
}
else{
ss++;
}
}
if(s==3){
if(w==0){
cout<<"impossible!"<<endl;
}
else{
cout<<a[ss]<<endl;
}
}
}
return 0;
}
这里空空如也
有帮助,赞一个