【问题标题】:data structure> queue : why is (rear = front) the condition for being empty?数据结构>队列:为什么(后=前)为空的条件?
【发布时间】:2017-10-06 13:31:09
【问题描述】:

我知道在循环队列中我们有 [0 , n-1] 然后 [n] 将再次位于 [0] 的位置。如果我们使用数组,那么指向 A[n-1] 的指针应该增加 1 以提供指向 A[0] 的指针。

这样的普通队列:

|_empty1_|_empty2_|_empty3_|_empty4_|...

所以这里的“front”指向“empty1”。但是,

第一个问题:队列为空时,rear指向哪里?

第二个问题:当单元格“empty1”的队列包含一个元素时,rear 指向哪里? (*1)

PS:我读到一些空的线性队列表示后=-1 和前=0,而一个单元格填充的队列表示后=前=0;但后来在一些伪代码中,我看到 if(front=rear) ->queue 已满。所以这是什么?!数组单元格按数字 0 到 n-1 排序,因此,rear=front=0 填充了一个单元格,即它们都指向的单元格。 (对吧?)


在循环队列中,语句 {rear=front} 表示队列是空的,对于满队列,我们​​有:rear=n-1 ,front=0 ,rear+1=front=0=n。


(*1) :我的第三个问题与第二个问题相同,但适用于循环。

【问题讨论】:

    标签: arrays data-structures queue


    【解决方案1】:

    在下面找到您所有问题的答案。

    1. 当队列为空时,您的后端也像前端节点一样指向第一个空节点。

    现在对于第二个和第三个疑问,我会给你一个合并的答复,所以我会告诉你我在实现队列方面遵循的逻辑,我希望它能帮助你创建自己的逻辑 队列数据结构。

    所以当我想要一些功能,比如 FIFO(先进先出)时,我会使用队列。现在,如果我将数组作为我的存储 DS,那么假设我有 n 作为我的数组 A 的大小。 因此,当我插入一个元素时,我将使后部 = 后部 + 1。所以我的前部仍然指向 0,并且我的后部根据我的插入操作继续递增。现在我的阵列将在我的 后方== n。

    为了检查它是否为空,所以当我们的数组中有一个元素时,此时我们的前后=0,所以当我们删除另一个元素时,使前后=-1。现在,下一次我们插入第一个元素时,我们可以将 front 和 back 设为 0,然后根据我们的操作继续更改 back 的值。

    再次,我是说这是我的方法,我会根据我的要求和使用情况进行更改。希望这会有所帮助:)

    【讨论】:

      猜你喜欢
      • 2016-12-11
      • 2013-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-20
      相关资源
      最近更新 更多