Skip to content

队列

数组模拟普通队列:

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;