- 普通队列(不循环)
代码参考队列 - 实现【可能要注册,不是广告】
1)使用的时候自己补充头文件和命名空间说明;
2)data.size()这个东西测试了一下,加入只在队列中输入2个元素的话,这个值就一直是2,其实相较于队列中元素个数这个含义,更贴合队尾指针。所以判空的时候p_start才和这个值进行比较。
- 循环队列
主要有三个要点:
1)队列为空时
front和rear设为-1,此时输入元素要将front和rear设为0;
2)队列只有一个元素时,front=rear,删除元素要将front和rear设为-1;
3)输入元素时,若队列不满而rear达到上限(队列长度),则需要循环;删除元素时,若队列不空而front达到上限,同样需要循环。
我没有采用输入元素时rear = (rear + 1) % size、删除元素front = (front + 1) % size的操作,和队列满时front = (rear + 1) % size的操作,而是将循环过程显白,直接利用元素数目比对判满。
参考程序:
class MyCircularQueue {
private:
vector<int> data;
int front,rear;
int size,count;
public:
MyCircularQueue(int k) {
data.reserve(k);
front=-1;
rear=-1;
count=0;
size=k;

本文详细讲解了如何实现和优化循环队列,包括队列初始化、元素入队与出队操作,以及特殊情况下front和rear的处理。重点介绍了循环队列的特点和避免隐式循环的方法。通过实例展示了代码,并讨论了代码执行效率和内存使用情况。
最低0.47元/天 解锁文章
1646

被折叠的 条评论
为什么被折叠?



