相关概念
队列:只允许在一段进行插入操作,而在另一端进行删除操作的线性表
性质:先进先出
循环队列:头尾相接的顺序存储队列称为循环队列。
队头队尾指针:为了避免队列只有一个元素时,队头和队尾重合,引入两个指针,front指向队头,rear指向队尾的下一个元素。
空队列:front == rear
满队列:为了更好的区分空队列和满队列,我们假定队列中还有一个空闲单元时称为满队列。(否则空队列和满队列时,均有front == rear,如下图)
满队列条件:(rear+1)% QueueSize == front
(4+1)%5 = 0 (1+1)%5=2
队列长度计算公式:(rear-front+QueueSize)%QueueSize
常见操作
- q.push(item)
- q.pop()
- q.front()
- q.back()
- q.size()
- q.empty()
# include<queue>
//使用push
queue<string> q;
q.push("Hello World");
q.push("hhh");
//使用size
q.size() //返回2
//使用front
q.front() //返回"Hello World!''
ps:更多数据结构知识详见:
常见数组结构与算法