我正在从Sahni的“ C语言中的数据结构基础”中学习数据结构。在主题“使用动态数组的循环队列”中,作者提到了以下要点,
让 capacity 为循环队列的初始容量,我们必须 首先使用realloc增加数组的大小,这将复制 新阵列上的最大容量元素。为了得到一个适当的 循环队列配置,我们必须在右侧滑动元素 数组右端的段(即元素A和B)(请参见 图3.7.d)。数组加倍,并一起向右滑动 复制最多 2 * 容量 -2个元素。
答案 0 :(得分:0)
让我们尝试说明最坏的情况:
对于具有capacity = N
的队列,该队列中最多存在N-1 elements
。
因此,当我们将队列大小加倍时,我们需要将所有这N-1个元素复制到新队列中,并且最多可以有N-1个移位(对于元素)。
所以总共2 *(N-1)= 2 * N-2