当前位置: 首页 > 面试题库 >

为什么将队列实现为循环数组?

赵正雅
2023-03-14
问题内容

当实现像队列这样的FIFO时,我的教练总是建议我们将其表示为圆形数组,而不是常规数组。为什么?

是因为在后者中,我们最终将在数组中包含垃圾数据吗?


问题答案:

如果您使用固定数量的Array-Slots /
Elements,则以循环方式回收插槽比较容易,因为您不需要重新排列Elements的顺序。每当第一个Element以类似Array的方式移除时,您都必须将剩余的Elements向前移动一个位置,因此头部不会移动null。在循环队列中,只需将指针增加到第一个位置即可。这是对更新的较少操作,可为您提供更好的性能

如果您要构建一个具有无限/动态插槽数的队列,则没关系,因为您可以动态释放和分配内存。



 类似资料:
  • 本文向大家介绍C++实现循环队列,包括了C++实现循环队列的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C++实现循环队列的具体代码,供大家参考,具体内容如下 circularQueue.h main.cpp 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 假设我有一个大小为[10]的数组,当该数组被填满时,我想实现一个FIFO结构,而不是它只是填满了,因此无法向数组中添加新的东西,并抛出旧的东西。 例如,如果我有一个包含汽车制造商的字符串数组,当我的数组中有10个制造商时,我希望删除最旧的条目,添加最新的条目,但要考虑kepping FIFO。我如何在这样的方法中实现它:

  • 本文向大家介绍C语言实现循环队列,包括了C语言实现循环队列的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C语言实现循环队列的具体代码,供大家参考,具体内容如下 注意事项: 1、循环队列,是队列的顺序表示和实现。因为是尾进头出,所以和顺序栈不同的是需要将顺序队列臆造成一个环状的空间,以便在尾部添加满之后从头部空位开始插入。 2、也可以使用数组队列,也就是不能动态增长的顺序队列,这样不

  • 编辑:为什么在局部变量上这么快?(~16秒进行相同的迭代,但对函数内部的局部变量进行迭代)

  • 本文向大家介绍使用js实现一个循环队列相关面试题,主要包含被问及使用js实现一个循环队列时的应答技巧和注意事项,需要的朋友参考一下

  • 本文向大家介绍C++数据结构之实现循环顺序队列,包括了C++数据结构之实现循环顺序队列的使用技巧和注意事项,需要的朋友参考一下 数据结构–用C++实现循环顺序队列 队列的操作特性:先进先出 队列中元素具有相同类型 相邻元素具有前驱和后继关系 设置队头、队尾两个指针,以改进出队的时间性能 约定:队头指针front指向队头元素的前一个位置,队尾指针rear指向队尾元素 为了解决假溢出,我们将存储队列的