C++에서 순환 배열을 사용하여 큐 구현을 작성하려고합니다. 나는 그 부분을 얻었지만, 나의 할당은 main.cpp에있는 함수에서 Queue를 출력하도록 요구한다. while 루프에서 인쇄해야하고 큐의 크기가 컴파일 타임에 반드시 최대 크기가 아니기 때문에 이것은 문제가됩니다.C++ 구조체 배열을 null로 초기화하고 나중에이 배열의 요소가 while 루프에서 null인지 확인하는 방법은 무엇입니까?
예 : 사용자가 최대 크기가 3 인 대기열에 2 명의 승객을 대기열에두고 대기열에 승객을 인쇄하려는 경우 while 회 돌이를 2 회만 계속하도록해야합니다. 그러나 나는 큐의 크기를 전달할 수 없으므로이 작업을 수행 할 수있는 유일한 방법은 큐의 승객 구조가 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::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
}
CQueue.cpp
내 클래스 생성자입니다 그리고 이것은 내 MAIN.CPP에서 할 노력하고있어 것입니다. Queue 요소를 순서대로 인쇄하려고하지만 사용자가 입력 한 요소 만 인쇄하려고합니다. 즉, 빈 요소를 인쇄하고 싶지 않습니다.while (???) // check if passanger is not the default null value
{
cout << CQueue.Front() << "\n";
copyQueue.Dequeue();
}
???의 위치에 무엇을 넣어야할지 불확실합니다. 나는 여러가지 다른 방법을 시도했지만 struct에 대한 NULL 값이 무엇인지 알지 못한다는 단순한 사실로 귀결됩니다.
미리 감사드립니다.
문제는 무엇인가? 주제에 질문을 넣어 다른 사람들이 귀하를 도울 수 있는지 빨리 확인하고 귀하가하려는 것을 이해하는 것이 더 쉽습니다. – Jacob