• 150723培训心得(queue)


    queue(STL中函数,就是指队列)


    #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()

    (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("
    ");
    		}
    	}
    	return 0;
    }


  • 相关阅读:
    4、java变量、函数、基本类型的值传递、分支、循环、流程控制
    mysql-数据库维护
    mysql-安全管理
    mysql-管理事务
    mysql-触发器
    mysql-游标
    mysql-过程与函数
    ViewPager 带动画的欢迎界面
    Pull to RefreshListView 添加HeaderView
    解决 listView gridView 与ScrollView嵌套时的冲突
  • 原文地址:https://www.cnblogs.com/lytwajue/p/7096408.html
Copyright © 2020-2023  润新知