150723培训经验(queue)
150723培训心得(queue)
#include <iostream>
#include <queue>
using namespace std; //这几个头文件必不可少
int main()
{
queue<类型(如int)> q; //使用前需定义一个queue变量,且定义时已经初始化
while(!q.empty()) q.pop(); //重复使用时,用这个初始化(空则返回1,不空返回0)
q.push(1); //进队列
q.pop(); //出队列
int v=q.front(); //得到队首的值
int s=q.size(); //得到队列里元素个数
return 0;
使用queue之前,要先利用构造函数一个队列对象,才可以进行元素的入队,出队,取队首和队尾等操作;
(1)queue() queue<int>q; 或者 queue<int>Q[10000];
(2)queue(const queue&) 复制构造函数
例如:用一行代码利用queue对象q1,创建一个以双向链表为底层容器的queue对象q2
queue<int,list<int>>q1;queue<int,list<int>>q2(q1);
(3)元素入队 函数为:push()例如:q.push(3),意思是将3入队 ,注意队列的大小不预设
(4)元素出队 函数为:pop()例如:q.pop()
(5)取对头元素 函数为:front()
(6)取队尾元素 函数为:back()
(7)判断对空 函数为:empty()
queue(STL中函数,就是指队列)
#include <queue>
using namespace std; //这几个头文件必不可少
int main()
{
queue<类型(如int)> q; //使用前需定义一个queue变量,且定义时已经初始化
while(!q.empty()) q.pop(); //重复使用时,用这个初始化(空则返回1,不空返回0)
q.push(1); //进队列
q.pop(); //出队列
int v=q.front(); //得到队首的值
int s=q.size(); //得到队列里元素个数
return 0;
}
使用queue之前,要先利用构造函数一个队列对象,才可以进行元素的入队,出队,取队首和队尾等操作;
(1)queue() queue<int>q; 或者 queue<int>Q[10000];
(2)queue(const queue&) 复制构造函数
例如:用一行代码利用queue对象q1,创建一个以双向链表为底层容器的queue对象q2
queue<int,list<int>>q1;queue<int,list<int>>q2(q1);
(3)元素入队 函数为:push()例如:q.push(3),意思是将3入队 ,注意队列的大小不预设
(4)元素出队 函数为:pop()例如:q.pop()
(5)取对头元素 函数为:front()
(6)取队尾元素 函数为:back()
(7)判断对空 函数为:empty()
(8)队列的大小 函数为:size()返回队列的当前元素的个数
代码:
#include<stdio.h> #include<string.h> #include<iostream> #include<queue> using namespace std; int sta[110000]; int map[110000][3]; int ans[110000]; int main() { int m; int n,s; int i,j,k; int now; queue<int>q;//定义int型队列q scanf("%d",&m); while(m--) { scanf("%d%d",&n,&s); q.push(s);//将s入队 for(i=1;i<n;i++) { map[i][0]=1; scanf("%d%d",&map[i][1],&map[i][2]); } memset(ans,0,sizeof(ans)); ans[s]=-1; while(!q.empty())//q.empty()判断是否队空,空则返回1,不空则返回0 { now=q.front();//取队首数据 q.pop();//出队 for(i=1;i<n;i++) { if(map[i][0]&&map[i][1]==now) { q.push(map[i][2]); ans[map[i][2]]=now; map[i][0]=0; } else if(map[i][0]&&map[i][2]==now) { q.push(map[i][1]); ans[map[i][1]]=now; map[i][0]=0; } } } for(i=1;i<=n;i++) { printf("%d",ans[i]); if(i!=n) printf(" "); else printf("\n"); } } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。