将一个数据留空和不在循环队列的数组实现中有什么区别?使用所有已实施的安排不是更有效吗?我不知道为什么将一个数据留空被认为是有效的。
1 回答
0
两个原因。
首先,如果那一项很重要,那么您的队列总是满的。它可能应该更大。此外,如果您的队列大小适中,例如 1,000 个项目,则一项代表队列的 0.1%。不是我所说的特别令人担忧的内存浪费。
更重要的是,如果您不留下额外的项目,那么实施就会成为问题。如果你有head和tail索引,那么它是什么意思 when head == tail?这是否意味着队列已满,或者它是空的?没有更多信息,这是不可能的。
您可以维护另一个值,该值明确告诉您队列中有多少项目,或者只是一个表明它不为空的标志,但随后会花费处理器周期来检查和更新该值。这对每个入队或出队操作都是低效的。
那么你想在每个队列操作上浪费处理器周期吗?还是您宁愿“浪费”少量内存来简化代码?
于 2019-06-28T00:56:10.247 回答