// Em vua học hàng đợi kiểu mảng động trong C++. dưới đây là code về một số hàm của em, mà khi chạy em bị lỗi là toàn “hàng đợi đã đầy” trong khi em chỉ cấp cho capacity một số, chưa EnQueue nhưng đã bị báo lỗi trên, em nghĩ là mình sai ở hàm Size và hàm IsFull, anh chị nào biết có thể giúp em với ạ
Queue* CreateQueue(Queue*& q, int capacity)
{
q = new Queue;
if (q == NULL)
return NULL;
q->capacity = capacity;
q->data = new int[capacity];
if (q->data == NULL)
{
delete q;
return NULL;
}
q->in = 0;
q->out = -1;
}
int IsEmpty(Queue* q)
{
if (q->out = -1)
return 1;
return 0;
}
int IsFull(Queue* q)
{
int size = Size(q);
if (size == q->capacity)
return 0;
return 1;
}
void EnQueue(Queue* q, int data)
{
if (IsFull(q) == 1)
{
cout << "\nThe queue is full, overflown condition";
return;
}
q->out++;
q->out = data;
}
void DeQueue(Queue* q)
{
if (IsEmpty(q) == 1)
{
cout << "\nThe queue is empty now";
return;
}
q->in = 0;
q->in++;
}
int Size(Queue* q)
{
return q->in - q->out;
}
void PrintQueue(Queue* q)
{
for (int i = 0; i <= q->out; i++)
{
cout << q->data[i] << "\t";
}
}
void Empty(Queue* q)
{
memset(q->data, 0, q->capacity * sizeof(int));
delete q->data;
memset(q, 0, sizeof(Queue));
delete q;
q = NULL;
}