【发布时间】:2014-11-14 15:56:38
【问题描述】:
在循环队列的数组实现中,如果前面指向第一个元素之前的一个槽,后面指向最后一个元素,那么我们面临如何识别队列是满还是空的问题。
为了解决这个问题,我们要么使用计数器,要么在缓冲区中浪费一个空间。
我正在考虑以下方法。请纠正我哪里出错了,如果不是,请告诉我这是否比上述解决方案更好/更差。
- 前面指向第一个元素,后面指向最后一个元素;
- 具有检查队列是否仅剩 1 个元素的功能;
- 如果我们要对最后一个元素进行出队,则将前后设为 -1;
- 如果前后均为-1,isEmpty() 将为真;
- 如果 front = (rear + 1) % size,isFull 将为真。
【问题讨论】:
标签: arrays algorithm data-structures queue circular-buffer