队列
用栈模拟队列
本来想偷个懒...跳过去,结果学到后面发现跳不过去了...hhh
又回过头来看一遍
//用数组模拟队列 int q[N],hh,tt=-1;//hh是队头,tt是队尾,初始值为-1,栈的初始值为0,两者有些差别 //从队尾入队列,从队头出队列 //入队 q[++tt]=x; //出队 hh++; //判断是否为空 if(hh<=tt) not empty;//这个时候队头在左边,队尾在右边** else empty; //取出队头元素 q[hh]; q[tt];//取队尾
实现一个队列,队列初始为空,支持四种操作:
push x
– 向队尾插入一个数 xx;pop
– 从队头弹出一个数;empty
– 判断队列是否为空;query
– 查询队头元素。
现在要对队列进行 MM 个操作,其中的每个操作 33 和操作 44 都要输出相应的结果。
输入格式
第一行包含整数 MM,表示操作次数。
接下来 MM 行,每行包含一个操作命令,操作命令为 push x
,pop
,empty
,query
中的一种。
输出格式
对于每个 empty
和 query
操作都要输出一个查询结果,每个结果占一行。
其中,empty
操作的查询结果为 YES
或 NO
,query
操作的查询结果为一个整数,表示队头元素的值。
数据范围
1≤M≤1000001≤M≤100000,
1≤x≤1091≤x≤109,
所有操作保证合法。
输入样例:
10
push 6
empty
query
pop
empty
push 3
push 4
pop
query
push 6
输出样例:
NO
6
YES
4z
直接上板子好了:
#include<iostream> using namespace std; const int N=100010; int q[N],hh,tt=-1; int main(){ int n; cin>>n; while(n--) { string ch; cin>>ch; if(ch=="push") { int x; cin>>x; q[++tt]=x; } if(ch=="pop") hh++; if(ch=="empty") { if(hh<=tt) cout<<"NO"<<endl; else cout<<"YES"<<endl; } if(ch=="query") { cout<<q[hh]<<endl; } } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具