浴谷金秋营-基础数据结构(1)

讲师:zcysky

队列

定义

  1. 先进先出
  2. 队头和队尾

用处

  1. BFS
  2. 单调队列——优化DP

STL

头文件

 #include<queue>

声明

 queue<类型>队列名;

插入删除

 q.push(x);
 q.pop();

其他操作

 q.empty();//如果是空队列返回true否则false
 q.size();//返回队列元素数量

手写队列

 struct queue{
 	
    int l,r,q[MAXN];
    queue:l(1),r(0){}
    
    inline void push(int x){
    	q[++r]=x;
    } 
    inline void pop(){
    	l++;
    }
    inline int head(){
    	return q[l];
    }
    inline int size(){
    	return r-l+1;
    }
    inline bool empty(){
    	return l>r;
    }
 }

循环队列

由于大量的插入删除,会使更早之前的使用的数组闲置,浪费内存。

当r指针超出数组size大小时,可以把r设为1(或者0),从头开始入队。

posted @ 2018-02-25 22:00  Neworld1111  阅读(166)  评论(0编辑  收藏  举报