gpt4 book ai didi

C 队列问题(练习)

转载 作者:行者123 更新时间:2023-11-30 17:47:32 27 4
gpt4 key购买 nike

我刚刚开始了 C 语言队列的第一课,我得到了创建队列、向队列添加元素和删除元素的练习。但是,我在检查队列是满还是空时遇到了麻烦。

#include <stdio.h>

typedef struct FloatQueue
{
float data[100];
int rear;
int size;
int front;
} FloatQueue;

typedef enum {false, true} bool;

void initQ (FloatQueue * pq);
bool isFullQ (FloatQueue * pq);
bool isEmptyQ (FloatQueue * pq);
void addQ(FloatQueue * pq, float x);
float deleteQ ( FloatQueue * pq);
int sizeQ (FloatQueue * pq);


void initQ (FloatQueue * pq)
{
pq->size = 0;
pq->front = pq->rear = 0;
}

void main ()
{
FloatQueue q1;
initQ (&q1);

addQ (&q1, 99.9);

addQ (&q1, 888);

while (!isEmptyQ(&q1))
{
printf("%f", deleteQ (&q1));
}

}

int sizeQ (FloatQueue * pq)
{
return pq->size;
}

bool isFullQ (FloatQueue * pq)
{
return true;
}

bool isEmptyQ (FloatQueue * pq)
{

return false;
}

void addQ ( FloatQueue * pq, float x)
{
(pq->rear) ++;
(pq->data[pq->rear]) = x;
(pq->size) ++;

}

float deleteQ ( FloatQueue * pq )
{
(pq->front)++;
return;
}

最佳答案

如果size == 100则队列已满,如果size == 0则队列为空。为什么检查起来很困难?

然而,正如现在所实现的那样,当且仅当front == back时,它才认为size == 0。这意味着,您可以FloatQueue中完全删除size,而是检查front -arar == 0分别。 100.

但是:你必须考虑一件事:如果后端超过尺寸会发生什么?那么你肯定需要重新安排一些事情。我让您找到一个好的解决方案,这可能意味着毕竟再次使用 size (提示:您不一定需要在数组中移动数据)。

关于C 队列问题(练习),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18911973/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com