Robert Sedwick による C++ のアルゴリズムでの FIFO キュー配列の実装について読んでいます。配列が検出されました。「頭」と「尾」が等しい場合、キューは空であると見なされます。しかし、「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 大きい割り当てがエラー チェックにどのように役立つかわかりません。サンプルコードを教えてください。
お時間をいただきありがとうございます。