前言
为什么要用数组来模拟队列?
因为数组机动性高,可用性高,灵活性也高
步入正题
请注意,以下的tail都指向末尾的下一个位置。
//插入一个元素
cin>>n;
a[tail]=n;
tail++;
if (head==tail)cout<<"队列为空";
if (tail!=head)head--;//弹出
int size=tail-head;//队列的长度
cout<<a[head];//输出队首
这些都是基本操作,还有些特殊的,比如说前缀和,以下是一个前缀和的样例
#include<bits/stdc++.h>
using namespace std;
long long a[101000],q[101000];
int head=1,tail=1;
int cmp1,cmp2;
int main(){
int n;
cin>>n;
for (int i=0;i<n;i++){
cin>>cmp1;
if (cmp1==1){
cin>>cmp2;
a[tail]=cmp2;
q[tail]=q[tail-1]+cmp2;
tail++;
}else if (cmp1==2){
if (head!=tail)head++;
}else if (cmp1==3){
if (head!=tail)tail--;
}else {
cin>>cmp2;
cout<<q[cmp2+head-1]-q[head-1]<<endl;//这里就是前缀和
}
}
return 0;
}