队列是一种特殊的线性表,类似于日程生活中的排队,只能在队首进行删除操作,在队尾进行插入操作。
C++
C++中的队列是queue,需要#include <queue>,定义格式为:queue<typename> name;
typename可以是任何基本类型,例如 int、double、char、vector、set等。下面以queue<int>为例。
queue<int> q; // 创建队列
for (int i = 1; i < 6; i++){
q.push(i); // 元素入队
}
q.pop(); // 队首元素出队
int qf = q.front(); // 获取队首元素
int qb = q.back(); // 获取队尾元素
int sz = q.size(); // 获取队列长度
bool flag = q.empty(); // 返回队列是否为空
// queue不能通过for auto来遍历,因为它是不可迭代的
Java
Java中的队列是Queue,默认声明为小根堆。需要import java.util.Queue;
Queue<Integer> q = new LinkedList<>(); // 创建队列,需要import java.util.LinkedList;
for (int i = 1; i < 6; i++){
q.add(i); // 元素入队
}
q.offer(6); // 元素入队
/* add与offer的区别在于:
对于有大小限制的队列,如果满了再插入元素,
前者会抛出异常,后者会返回false */
q.remove(6); // 根据值移除元素
q.clear(); // 清空整个队列
int sz = q.size(); // 获取队列的元素个数
boolean flag = q.contains(99); // 返回是否包含某个值
boolean flag2 = q.isEmpty(); // 返回队列是否为空
int top = q.peek(); // 获取队首的值(不删除)
int top2 = q.poll(); // 获取队首的值(删除)
// 遍历队列
for (int i: q){
System.out.println(i);
}
Python
Python中的队列是包queue中的Queue。
from queue import Queue # 导入包
lq = Queue() # 创建队列
for i in range(1, 6):
lq.put(i) # 压元素入栈
print(lq.get()) # 队首元素出栈
print(lq.qsize()) # 获取队列长度
print(lq.empty()) # 返回队列是否为空
# Queue不能通过for...in...来遍历,因为它是不可迭代的