当前位置: 首页 > 知识库问答 >
问题:

对以下预期循环队列结果的解释

丌官和泰
2023-03-14

正如你所看到的,我的答案是不正确的。我仍然不明白为什么会这样,所以让我们再把一切都过一遍。

  1. 创建大小为2的循环队列
  2. 入列8,当前队列:8
  3. 进入队列8,当前队列:8,8
  4. 前端:8(队列没有变化)
  5. 进入队列4,当前队列:4,8
  6. 出列,当前队列:8
  7. 队列1,当前队列:8,1
  8. 进入队列1,当前队列:1,1
  9. 后面:1(队列没有更改)
  10. 为空:false(队列没有更改)
  11. 前端:1(队列未更改)
  12. 出列,当前队列:1

根据我的分析,最后一个front操作应该返回1,因为队列是1,1。然而,答案却是8。我是不是漏掉了什么?请给我解释一下。

共有1个答案

狄雅珺
2023-03-14

想通了。必须在排队前检查队列是否已满。然而,我没有这样做,因为我认为循环队列是一种形式的无限DS像退出堆栈,所以我的答案是错误的。

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

  • 循环队列(Circular Queue) 1. 循环队列的概念 1.1 循环队列的定义 为了能够充分地使用数组中的存储空间,克服”假溢出”现象,可以把数组的前端和后端连接起来,形成一个环形的表,即把存储队列元素的表从逻辑上看成一个环,成为循环队列(circular queue)。 1.2 循环队列中各元素的逻辑及存储关系 循环队列的首尾相接,当队头指针front和队尾指针rear进到maxSize

  • 基本上,我已经得到了一个CircularQueue的实现,我需要实现一个名为'public boolean contains(E other)'的方法,如果参数'other'存在于我的队列中,该方法应该返回true。 我对它没意见,因为它是一个数组,但后来我看到了它的另一个条件,这困扰着我。 请记住,您不能在队列中的所有元素之间自由导航。只有front元素在任何时候都可以通过peek方法访问。co

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

  • 本文向大家介绍详解数据结构C语言实现之循环队列,包括了详解数据结构C语言实现之循环队列的使用技巧和注意事项,需要的朋友参考一下 本文讲的是循环队列,首先我们必须明白下面几个问题 循环队列的基础知识 1.循环队列需要几个参数来确定 循环队列需要2个参数,front和rear 2.循环队列各个参数的含义 (1)队列初始化时,front和rear值都为零; (2)当队列不为空时,front指向队列的第一

  • 输入一个整数序列:a1,a2,a3,…,an,进行入队或出队操作。用数组Q[m](最多能放m个元素,本题设m=9)表示队列,并且设一个标志tag,以tag0和tag1来区别在队头指针(front)和队尾指针(rear)相等时,队列状态为“空”还是“满”。试编写相应的入队和出队等算法,并完成以下任务:对输入的ai,当ai>0时,将ai入队,若入队时队满则发生上溢“OVERFLOW”;当ai=0时,队