1. 队列基础
一种特殊的线性表,它只允许在表的前端(前)进行删除操作,而在表的后端(后)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。
- 队尾(后) - 允许插入的一端
- 队头(前) - 允许删除的一端
队列特点:先进先出(FIFO)
队列的结构
如下图所示:
线性表的操作主要包括:
(1 )清空队列
(2)判断是否为空
(3)元素的个数
(4)入队列
(5)出队列
(6)取对头元素
2.循环队列
顺序循环队列结构模型
•存在问题
设数组长度为n,则:
-当前= 0,后部= M时,再有元素入队发生溢出- 真溢出
- !当前= 0,后部= M时,再有元素入队发生溢出- 假溢出
•解决方案
-队首固定,每次出队剩余元素向下移动-浪费时间
-循环队列
»基本思想:队列把设想分类中翻译环形,让平方[0]接在平方[M-1]之后,若后方+ 1 ==n,则令后部= 0;
3.模型
结构模型
设队首,队尾指针前面和后面,前面指向头结点,后指向队尾
STL------queue
queue 模板类的定义在<queue>头文件中。
与stack 模板类很相似,queue 模板类也需要两个模板参数,一个是元素类型,一个容器类
型,元素类型是必要的,容器类型是可选的,默认为deque 类型。
定义queue 对象的示例代码如下:
queue<int> q1;
queue<double> q2;
queue 的基本操作有:
入队,如例:q.push(x); 将x 接到队列的末端。
出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。
访问队首元素,如例:q.front(),即最早被压入队列的元...
queue 模板类的定义在<queue>头文件中。
与stack 模板类很相似,queue 模板类也需要两个模板参数,一个是元素类型,一个容器类
型,元素类型是必要的,容器类型是可选的,默认为deque 类型。
定义queue 对象的示例代码如下:
queue<int> q1;
queue<double> q2;
queue 的基本操作有:
入队,如例:q.push(x); 将x 接到队列的末端。
出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。
访问队首元素,如例:q.front(),即最早被压入队列的元素。
访问队尾元素,如例:q.back(),即最后被压入队列的元素。
判断队列空,如例:q.empty(),当队列空时,返回true。
访问队列中的元素个数,如例:q.size()