C++で循環配列を使用してキュー実装を作成しようとしています。私はその部分を正しく持っていますが、私の割り当てでは、main.cppの関数でQueueを表示するように求めています。これは私がwhileループでそれを印刷しなければならなくて、キューのサイズがコンパイル時に最大サイズであるとは限らないので、私には問題があります。C++構造体の配列をnullに初期化し、後でこの配列の要素がwhileループでnullであるかどうかを確認できますか?
たとえば、ユーザーが最大サイズ3のキューに2人の乗客をエンキューし、そのキューに乗客を印刷する場合は、2回の繰り返しだけwhileループを実行する必要があります。しかし、私はキューのサイズを渡すことはできませんので、私はこれを行うことができる唯一の方法は、乗客の構造体がNULLでないかどうかをチェックすることです。構造体のコンテキスト内でNULLが何を意味するのか分かりません。
これは私のヘッダーファイルCQueue.hです。
const int MAX = 3;
struct Passenger {
char name[80];
};
class CQueue {
private:
int front;
int rear;
Passenger passengers[MAX];
public:
CQueue();
bool IsEmpty();
bool IsFull();
void Enqueue(Passenger);
Passenger Front(); // Returns the passenger type at the front index of array
void Dequeue();
};
これはCQueue.cpp
CQueue::CQueue() // Custom constructor initializes the fields of the CQueue class with the appropriate values
{
front = -1; // Conditions for emptiness of CQueue
rear = -1; // Conditions for emptiness of CQueue
??? // needs a line to initialize passengers[MAX] elements to some default NULL value
}
の私のクラスのコンストラクタであり、これは私が私のmain.cppにでやろうとしているものです。 Queue要素を順番に印刷しようとしていますが、ユーザーが入力した要素だけを印刷します。言い換えれば、私は空の要素を印刷したくありません。
while (???) // check if passanger is not the default null value
{
cout << CQueue.Front() << "\n";
copyQueue.Dequeue();
}
私は???の代わりに何を置くべきかは不明です。私はさまざまな方法を試しましたが、構造体のNULL値が何であるかわからないという単純な事実があります。
ありがとうございます!
質問は何ですか?件名に質問を入れて、他の人があなたを助けることができるかどうかをすぐに見て、あなたがしようとしていることを理解する方が簡単です。 – Jacob