我正在阅读 Robert Sedwick 在 C++ 中的算法中的 FIFO 队列数组实现。队列的内容是数组中“头”和“尾”之间的所有元素,考虑到结束时回绕回 0遇到数组。如果“头”和“尾”相等,则认为队列为空;但是如果“put”会使 then 相等,那么我们认为它是满的。我们使数组 1 的大小大于客户端期望在队列中看到的最大元素数,以便我们可以增强该程序以进行错误检查。
template <class Item>
class QUEUE
{
private:
Item *q; int N, head, tail;
public:
QUEUE(int maxN)
{ q = new Item[maxN+1];
N = maxN+1; head = N; tail = 0; }
int empty() const
{ return head % N == tail; }
void put(Item item)
{ q[tail++] = item; tail = tail % N; }
Item get()
{ head = head % N; return q[head++]; }
};
我的问题是为什么作者在文本中提到的分配数组 1 大于指定用于进行错误检查的用户。我不知道分配 1 大于用户请求将如何帮助我们进行错误检查?请帮助我提供示例代码。
感谢您的时间和帮助。