使用动态数组的循环队列

时间:2019-04-14 17:13:04

标签: data-structures queue circular-buffer

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

  

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

我了解大多数容量元素中的阵列加倍副本。但是如何将数组加倍并滑动到最多 2 *容量-2个元素enter image description here

1 个答案:

答案 0 :(得分:0)

让我们尝试说明最坏的情况:

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

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

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