0

将一个数据留空和不在循环队列的数组实现中有什么区别?使用所有已实施的安排不是更有效吗?我不知道为什么将一个数据留空被认为是有效的。

4

1 回答 1

0

两个原因。

首先,如果那一项很重要,那么您的队列总是满的。它可能应该更大。此外,如果您的队列大小适中,例如 1,000 个项目,则一项代表队列的 0.1%。不是我所说的特别令人担忧的内存浪费。

更重要的是,如果您不留下额外的项目,那么实施就会成为问题。如果你有headtail索引,那么它是什么意思 when head == tail?这是否意味着队列已满,或者它是空的?没有更多信息,这是不可能的。

您可以维护另一个值,该值明确告诉您队列中有多少项目,或者只是一个表明它不为空的标志,但随后会花费处理器周期来检查和更新该值。这对每个入队或出队操作都是低效的。

那么你想在每个队列操作上浪费处理器周期吗?还是您宁愿“浪费”少量内存来简化代码?

于 2019-06-28T00:56:10.247 回答