关于队列~

目录

队列

成员函数 

优先队列 

成员函数 

 双端队列

成员函数 

 Team Queue

代码 


队列

队列是一个先进先出的数据结构。

成员函数 

queue<int> q;

q.push(x) 插入

q.pop() 删除队首元素

q.front() 获取队首元素

q.back() 获取队尾元素

q.empty() 判空

q.size() 队列大小

优先队列 

优先级队列(priority_queue)其实不满足先进先出的条件,更像是数据类型中的“堆”。优先级队列每次出队的元素是队列中优先级最高的那个元素,而不是队首的元素。这个优先级可以通过元素的大小等进行定义。比如定义元素越大优先级越高,那么每次出队,都是将当前队列中最大的那个元素出队。默认的是一个大顶堆。

小顶堆声明:priority_queue<int,vector<int>,greater<int> >q;

成员函数 

push()	将新元素插入优先队列。
pop()	将优先级最高的元素从队列中删除。
top()	寻址优先队列的最顶层元素。
size()	返回大小。
empty()	判空
swap()	将优先队列的元素与具有相同类型和大小的另一个队列交换。
emplace() 在队列顶部插入一个新元素。

 双端队列

两端都可操作。

成员函数 

push_front(x) 在队首插入元素
push_back(x) 在队尾插入元素
pop_back() 删除队尾元素
pop_front() 删除队首元素
front() 获取队首元素
back() 获取队尾元素
size() 队列大小
empty() 判空

 Team Queue

ENQUEUE x -将元素x输入到团队队列中

DEQUEUE -处理第一个元素并将其从队列中移除停止

若该团队中已有元素存在,那么就插入到团队元素之后,否则直接插入到最后

代码 

#include<iostream>
#include<set>
#include<queue>
#include<vector>
#include<stack> 
#include<map>
#include<cstring>
#include<algorithm>
#include<cmath>
#define int long long
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
const int N=1010;
int a[N];
void solve()
{
	int t,k=1;
	while(cin>>t&&t!=0)
	{
		printf("Scenario #%d\n",k++);
		int n,x;
		string s; 
		map<int,int> mp;
		for(int i=1;i<=t;i++){
			cin>>n;
			for(int j=1;j<=n;j++){
				cin>>x;
				mp[x]=i;
			}
		}
		queue<int> q[1010],que;
		int f=1,i=1;
		memset(a,0,sizeof(a));
		while(cin>>s&&s!="STOP")
		{
			if(s=="ENQUEUE"){
				cin>>x;
				q[mp[x]].push(x);
				if(!a[mp[x]]){
					que.push(mp[x]);
					a[mp[x]]=1;
				}
			}
			else{
				cout<<q[que.front()].front()<<endl;
				q[que.front()].pop();
				if(q[que.front()].empty()){
					a[que.front()]=0;
					que.pop();
				}
			}
		}
		cout<<endl;	
	}	
}
signed main()
{
	int T=1;
	while(T--)
	{
		solve();
	}
	return 0;
}

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值