欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;
}
相关标签: 双端队列