【问题标题】:What is the correct term for a fixed sized FIFO queue?固定大小的 FIFO 队列的正确术语是什么?
【发布时间】:2010-10-29 12:32:57
【问题描述】:

以下数据结构的正确名称是什么?它是:

  • 固定大小的队列
  • 新元素添加到开头
  • 每当队列超过一定大小时,就会从末尾删除一些元素

【问题讨论】:

  • 那么重点是元素被批量删除而不是一个一个删除?
  • 您是否已经创建了上述数据结构,只是想为它找到一个合适的名称?
  • @Vizu:是的,否则它将是一个标准的循环缓冲区。
  • @Xiaofu:是的,我在下面使用.Net 列表,它不是一个循环缓冲区。
  • 循环队列怎么样?见下文。仍然认为它应该在名称中包含“自动弹出”。 ;)

标签: data-structures queue collections fifo


【解决方案1】:

这是一个circular buffer

【讨论】:

  • 我认为您可能是对的,尽管容量会有所不同,并且循环缓冲区的容量是固定的。
【解决方案2】:

我认为这可能取决于实际的实现。您描述的一个实际示例是Circular Buffer 或环形缓冲区,一旦缓冲区已满,最旧的数据就会被新数据覆盖。这将是用 C 语言实现这种数据结构的传统方法之一。

编辑:好的,所以循环缓冲区不太适合。 Finite Buffer QueueFinite Capacity Queue 怎么样?但这些并没有真正涵盖自我限制方面......

自限制有限容量 Bratt 队列。

自动弹出...

我的观点是,我认为具有您提到的 exact 属性的数据结构没有正式名称,因此您不妨根据最接近的数据结构来编一个类似于它,也许与您的结构的一些独特属性相结合。不过,这可能会很罗嗦......

编辑: 或者可能是Cyclic Queue。文章将其描述为:

这篇文章描述了一个类似于 System.Collections.Queue 的队列,除了它有一个固定的缓冲区大小。当然,这意味着缓冲区不能足够大以 > 容纳添加到队列中的所有项目,在这种情况下,最旧的项目将被丢弃。

...听起来很像你的。简洁明了。

【讨论】:

    【解决方案3】:

    在硬件中,类似的结构称为shift register

    【讨论】:

      【解决方案4】:

      “一个固定大小的 FIFO 队列”

      有时是缓冲区,有时是环形缓冲区(通常是这样实现的)。我不知道有什么可以表明您批量删除项目的策略,尽管这并不少见。

      【讨论】:

        【解决方案5】:

        在嵌入式系统中,这几乎被普遍称为循环缓冲区。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-09-06
          • 2011-06-23
          • 2016-01-14
          • 2015-05-29
          • 2019-10-13
          • 1970-01-01
          • 2011-12-28
          相关资源
          最近更新 更多