排队ADT考试练习

时间:2014-03-21 04:33:12

标签: algorithm queue

这是我正在完成的考试问题,我理解这个理论,但我不确定代码。

队列将被保存在一个名为Q的线性数组中,其元素数量= limit (编号0到限制-1)。队列中最旧的元素将保存在数组中 元素0(在前面),数组元素1中的下一个,依此类推。一个叫做回的变量 存储包含队列中最新元素的数组元素的索引 (对于空队列,为-1)。

删除操作的伪代码是什么?

size操作的伪代码是什么?

评论remove和size的实现效率 操作

2 个答案:

答案 0 :(得分:0)

删除操作的伪代码:

if back = -1
  error (Queue is empty)
else
  decrease back by 1

用于大小操作的伪代码:

size = value of back + 1

效率:订单(1)或恒定时间

答案 1 :(得分:0)

我认为还应该有一个变量front来存储队列的前端。因此,我们可以通过Q[front]获得第一个元素。

这样:

  1. 删除操作 if(front<=back) { returnValue = Q[front]; front++; return returnValue; }
  2. 尺寸操作 return back-front+1;
  3. 时间复杂度都是O(1)。