deque双端队列的基本操作
程序员文章站
2022-07-14 14:16:15
...
deque双端队列
众所周知,队列只是一头操作;但是没想到还有双端队列,支持首尾两头入队,首尾两头出队,支持两头取元素;最重要的还是分清头和尾;
现在介绍基本用法:
clear():清空队列
empty():检查队列是否为空。
size():返回队列元素个数
front():返回队列首部元素。
back():返回尾部元素。
push_back():从尾部插入一个元素。
push_front():从头部插入一个元素。
pop_back():弹出队尾元素。
pop_front():弹出队首元素。
差不多就这么多;
一道双端队列板子题
P2952 [USACO09OPEN]牛线Cow Line
代码:
#include<bits/stdc++.h>
using namespace std;
deque<int>qu;
int main(){
int s;
scanf("%d",&s);
char a[5];
int ans=0;
for(int i=1;i<=s;i++){
scanf("%s",a);
if(a[0]=='A'){
scanf("%s",a);
if(a[0]=='L'){
qu.push_front(++ans);
}
else{
qu.push_back(++ans);
}
}
else{
scanf("%s",a);
int b;
if(a[0]=='L'){
scanf("%d",&b);
while(b--) qu.pop_front();
}
else{
scanf("%d",&b);
while(b--) qu.pop_back();
}
}
}
while(!qu.empty()){
printf("%d\n",qu.front());
qu.pop_front();
}
return 0;
}
上一篇: Stacks of Flapjacks(双端队列0v0)
下一篇: 水题-双端队列