zoukankan      html  css  js  c++  java
  • 队列基础代码与模板整理

    队列(_{queue})

    一种基本的数据结构

    这里我们只讲普通队列/普通队列进阶,非常简单,非常基础,不讲更高层次的队列,不要恐慌.

    本质:一种线性表.

    特性:"先进先出",类比排队

    普通队列

    用于手动实现の材料:

    1. 队列本体(数组)

    2. 头指针,指向对头元素的前一个位置(一个变量或一个指针)

      或者直接理解为,头指针下一个要指到的就是队头元素

    3. 尾指针,指向队中最后一个元素的位置(同头指针)

      可以理解为"最新元素的位置"

    就是这样

    设共有(t)次操作,下面(t)行每行两个数字,

    第一个(opr),第二个(num),

    (opr)=1则为插入操作,(opr)=2则为弹出操作,后面的(num)是插入/弹出的数值

    最基础的队列代码实现:

    #include<iostream>
    #include<cstdio>
    using namespace std;
    const int N=100005;
    int t;
    int q[N];
    int head=0,tail=0;
    int main(){
    	scanf("%d",&t);
    	while(t){
    		--t;
    		int opr,num;
    		scanf("%d",&opr);
    		if(opr==1){
    			scanf("%d",&num); 
    			q[++tail]=num;
    		} 
    		else
    			printf("%d",q[++head]);
    	}; 
    } 
    

    成了...

    循环队列

    重复利用曾被释放的空间

    通过取模完成指针的循环操作

    #include<iostream>
    #include<cstdio>
    using namespace std;
    const int N=100005;
    int t;
    int q[N];
    int head=0,tail=0;
    int main(){
    	scanf("%d",&t);
    	while(t){
    		--t;
    		int opr,num;
    		scanf("%d",&opr);
    		if(opr==1){
    			scanf("%d",&num);
    			if(++tail>100000)
    				tail=tail%4+1; 
    			q[tail]=num;
    		} 
    		else{
    			if(++head>100000)
    				head=head%4+1;
    			printf("%d",q[head]);
    		}
    	}; 
    } 
    

    最重要而基础的部分

    STL中queue的实现

    有STL为什么要自己手动实现呢QAQ

    #include<iostream>
    #include<cstdio>
    #include<queue> 
    using namespace std;
    const int N=100005;
    int t;
    queue<int> q;
    int main(){
    	scanf("%d",&t);
    	while(t){
    		--t;
    		int opr,num;
    		scanf("%d",&opr);
    		if(opr==1){
    			scanf("%d",&num);
    			q.push(num);
    		}
    		else{
    			int a=q.front();
    			q.pop();
    			printf("%d
    ",a);
    		}
    	}; 
    } 
    
  • 相关阅读:
    set命令_Linux
    AngularJS的date 过滤器
    JMeter环境介绍
    JMeter测试计划要素
    HTTP协议的压缩及URL Encode
    fiddler配置及使用教程
    Slenium常用方法
    Selenium八大定位
    CSS实现上下左右垂直居中
    SASS用法笔记
  • 原文地址:https://www.cnblogs.com/648-233/p/12818599.html
Copyright © 2011-2022 走看看