队列
队列
队列(queue)是一种具有「先进入队列的元素一定先出队列」性质的表。
由于该性质,队列通常也被称为先进先出(first in first out)表,简称 FIFO 表。
STL队列
以下操作的复杂度均为\(O(1)\)。
-
创建队列
queue<int> qqueue<char> qqueue<string> q
-
元素访问
q.front()返回队首元素q.back()返回队尾元素
-
修改
q.push(x)在队尾插入元素\(x\)q.pop()弹出队首元素
-
容量
q.empty()队列是否为空,若为空,返回true。q.size()返回队列中元素的数量
STL用法:
queue<int> q;
printf("队列是否为空:%d\n", q.empty());
for(int i = 1; i <= 3; i ++)
{
q.push(i);
}
printf("队首元素:%d,队尾元素:%d\n", q.front(), q.back());
q.pop();
printf("队首元素:%d,队尾元素:%d\n", q.front(), q.back());
printf("队列长度:%d", q.size());

数组模拟队列
以下操作的复杂度均为\(O(1)\)。
-
创建队列
int q[SIZE], ql = 1, qr = 0;
-
元素访问
q[ql]返回队首元素q[qr]返回队尾元素
-
修改
q[++ qr] = x在队尾插入元素\(x\)ql ++弹出队首元素
-
容量
qr >= ql队列是否为非空:若非空,返回true。qr - ql + 1返回队列中元素的数量
数组模拟队列用法:
int q[100], ql = 1, qr = 0;
printf("队列是否为非空:%d\n", qr >= ql);
for(int i = 1; i <= 3; i ++)
{
q[++ qr] = i;
}
printf("队首元素:%d,队尾元素:%d\n", q[ql], q[qr]);
ql ++;//弹出队首
printf("队首元素:%d,队尾元素:%d\n", q[ql], q[qr]);
printf("队列长度:%d", qr - ql + 1);


浙公网安备 33010602011771号