队列
数组模拟普通队列:
C++
int que[N];
int hh = 0, tt = -1; // hh表示队头 tt表示队尾 队中元素从0开始
// 向队尾放入一个数x
void offer(int x) {
que[++tt] = x;
}
// 从队头拉出一个数
void poll() {
++hh;
}
// 判断队列是否为空 tt<hh时表示队列为空
bool empty() {
return tt < hh;
}
// 返回队头的值
int front() {
return que[hh];
}
// 返回队尾的值
int back() {
return que[tt];
}
int que[N];
int hh = 0, tt = -1; // hh表示队头 tt表示队尾 队中元素从0开始
// 向队尾放入一个数x
void offer(int x) {
que[++tt] = x;
}
// 从队头拉出一个数
void poll() {
++hh;
}
// 判断队列是否为空 tt<hh时表示队列为空
bool empty() {
return tt < hh;
}
// 返回队头的值
int front() {
return que[hh];
}
// 返回队尾的值
int back() {
return que[tt];
}
数组模拟循环队列:
C++
int que[N];
int hh = 0, tt = 0; // hh表示队头 tt表示队尾的后一个位置
// 向队尾放入一个数x
void offer(int x) {
que[tt++] = x;
if (tt == N) tt = 0;
}
// 从队头拉出一个数
void poll() {
if (++hh == N) hh = 0;
}
// 返回队头的值
int front() {
return que[hh];
}
// 判断队列是否为空 tt==hh时表示队列为空
bool empty() {
return tt == hh;
}
int que[N];
int hh = 0, tt = 0; // hh表示队头 tt表示队尾的后一个位置
// 向队尾放入一个数x
void offer(int x) {
que[tt++] = x;
if (tt == N) tt = 0;
}
// 从队头拉出一个数
void poll() {
if (++hh == N) hh = 0;
}
// 返回队头的值
int front() {
return que[hh];
}
// 判断队列是否为空 tt==hh时表示队列为空
bool empty() {
return tt == hh;
}
Java API
Java
import java.util.*;
Queue<Integer> que = new LinkedList<>();
import java.util.*;
Queue<Integer> que = new LinkedList<>();
C++ STL
C++
#include <queue>
queue<int> que;
#include <queue>
queue<int> que;