文章目录
1、队列(queue)的定义
队列(queue)是一种先进先出( FIFO) 的线性表。它只允许在表尾进行插入,而在队头删除元素。
运用 queue, 必须声明请头文件:#include <queue>
。
queue 声明:如声明一个元素类型为整型的 queue:queue<int> st
;
2、队列(queue)的两种存储表示
(1)链队列——队列的链式表示
链队列需要头指针和尾指针才能唯一确定。空链队列的判决条件:头指针和尾指针均指向头结点,如3-11(a)所示。
注意:在删除操作中,当队列的最后一个元素被删后,队列尾指针也丢失了,因此需对尾指针重新赋值。
(2)循环队列——队列的顺序表示
对于顺序栈,初始化建空队列时,令 front = rear = 0,每当插入新的队列尾元素时,“尾指针增1”;每当删除队列头元素时,“头指针增1”。当队列非空时,头指针时钟指向队列头元素,尾指针始终指向队列尾元素的下一个位置。
队列元素个数:( Q.rear - Q.front + MAXQSIZE ) % MAXQSIZE。
队列满的条件:( Q.rear + 1 ) % MAXQSIZE == Q.front。
3、队列(queue)的主要成员函数
(1)队列主要的四个成员函数
que.push() // 将一个元素置入queue 内。
que.front() //返回queue内的 “下一个” 元素,即队头元素。
que.back() //返回queue的最后一个元素
que.pop() //从queue中移除一个元素
(2)注意
如果queue 内没有元素,则执行 front() 和 pop() 会导致未定义的行为。所以,在使用前可以先用成员函数 size() 或 empty() 来检验容器是否为空。
(3)用法示例
#include <iostream>
#include <queue>
using namespace std;
int main(){
queue<int> que;
for(int i=0; i<10; i++){
que.push(i