浴谷金秋营-基础数据结构(1)
讲师:zcysky
队列
定义
- 先进先出
- 队头和队尾
用处
- BFS
- 单调队列——优化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),从头开始入队。