AcWing 829. 模拟队列
Posted MangataTS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AcWing 829. 模拟队列相关的知识,希望对你有一定的参考价值。
题目连接
https://www.acwing.com/problem/content/831/
思路
我们定义一个head和tail表示头尾指针,然后push的时候就把tail指针往后移动,pop的时候就把head指针往前移动,当两指针相等的时候说明队列里面没有元素,head指针指向的就是我们的队首元素
代码
#include<bits/stdc++.h>
using namespace std;
//----------------自定义部分----------------
#define ll long long
#define mod 1000000009
#define endl "\\n"
#define PII pair<int,int>
int dx[4]=0,-1,0,1,dy[4]=-1,0,1,0;
ll ksm(ll a,ll b)
ll ans = 1;
for(;b;b>>=1LL)
if(b & 1) ans = ans * a % mod;
a = a * a % mod;
return ans;
ll lowbit(ll x)return -x & x;
const int N = 2e6+10;
//----------------自定义部分----------------
int n,m,q,a[N];
int tail,head;
int main()
cin>>n;
string op;
tail = head = 1;
while(n--)
cin>>op;
if(op == "push")
int x;
cin>>x;
a[tail++] = x;
else if(op == "pop")
if(head<tail) head++;
else if(op == "empty")
if(head == tail) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
else if(op == "query")
if(head != tail) cout<<a[head]<<endl;
return 0;
以上是关于AcWing 829. 模拟队列的主要内容,如果未能解决你的问题,请参考以下文章