带头尾指针的循环队列的基本操作

1个回答
展开全部
咨询记录 · 回答于2022-04-20
带头尾指针的循环队列的基本操作
你好,循环队列中进行出队、入队操作时,头尾指针仍要加1,朝前移动。只不过当头尾指针指向向量上界(QueueSize-1)时,其加1操作的结果是指向向量的下界0。这种循环意义下的加1操作可以描述为: ① 方法一: if(i+1==QueueSize) //i表示front或rear i=0; else i++; ② 方法二--利用"模运算" i=(i+1)%QueueSize; (2) 循环队列边界条件处理   循环队列中,由于入队时尾指针向前追赶头指针;出队时头指针向前追赶尾指针,造成队空和队满时头尾指针均相等。因此,无法通过条件front==rear来判别队列是"空"还是"满"。 【 参见动画演示】   解决这个问题的方法至少有三种: ① 另设一布尔变量以区别队列的空和满; ② 少用一个元素的空间。约定入队前,测试尾指针在循环意义下加1后是否等于头指针,若相等则认为队满(注意:rear所指的单元始终为空); ③使用一个计数器记录队列中元素的总数(即队列长度)。
下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消