【问题标题】:Circular Queue using Dynamic Array使用动态数组的循环队列
【发布时间】:2019-04-14 17:13:03
【问题描述】:

我正在从 Sahni 的“C 语言数据结构基础”中学习数据结构。在主题中,使用动态数组的循环队列,作者提到了以下几点,

容量为循环队列的初始容量,我们必须 首先使用 realloc 增加数组的大小,这将复制 新阵列上的最大容量元素。为了得到一个合适的 循环队列配置,我们必须向右滑动元素 段(即元素 A 和 B)到数组的右端(参考 图 3.7.d)。数组加倍和向右滑动一起 最多复制 2 * 容量 -2 个元素

我了解大多数容量元素的数组加倍副本。但是数组加倍并向右复制最多2 *容量-2个元素如何?

【问题讨论】:

    标签: data-structures queue circular-buffer


    【解决方案1】:

    让我们尝试证明最坏情况的合理性:

    对于具有capacity = N 的队列,队列中存在最大N-1 elements

    因此,当我们将队列大小加倍时,我们需要将所有这些 N-1 个元素复制到新队列中,并且最多可以有 N-1 个移位(对于元素)。

    所以总共有 2*(N-1) = 2*N - 2

    【讨论】:

      猜你喜欢
      • 2019-08-16
      • 2023-03-07
      • 2021-10-03
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多