【问题标题】:Pseudo-code for dequeue出队的伪代码
【发布时间】:2014-04-24 06:13:27
【问题描述】:

队列将被保存在一个称为 Q 的线性数组中,其中元素数 = limit(编号为 0 到 limit-1)。队列中最旧的元素将保存在数组元素 0 中(在前面),下一个元素保存在数组元素 1 中,依此类推。变量 back 存储包含队列中最新元素的数组元素的索引(或 -1 表示空队列)。

我如何编写“大小”操作(在伪代码中)?

**

【问题讨论】:

  • 按照规范,是的。但是 O(n) 中的出队算法肯定是个坏主意。
  • 如果你实现了一个循环数组,你不需要 for 循环;)见here
  • 这种“问题”有codereview@stackexchange。如果你没有一个确切的。

标签: arrays algorithm pseudocode deque


【解决方案1】:

您只需减少包含最后一个元素的索引,然后返回该值。下次您添加某些内容时,它将覆盖最后一个元素的实际值。伪代码非常简单:

dequeue() { 
    returnValue = queue[index]; 
    queue.index = queue.index - 1; 
    return returnValue; 

}

IE。你的算法效率很低。删除操作可以在恒定时间(快)内完成,而不是相对于元素数量呈线性(较慢)。

【讨论】:

  • RsinghS... 我可以返回数组的大小吗?如果您能提供帮助,我将不胜感激:)
  • 你是指元素个数还是队列的总容量?如果它是元素的数量,那么您只需返回索引的值 + 1。如果它是总容量,那么您使用的任何语言都可以为您提供该值。
  • @Rsingh... 是的,我刚刚发现它是:返回后 - 前 + 1;这可能相当于:return back + 1;
猜你喜欢
  • 2018-05-30
  • 1970-01-01
  • 2021-07-08
  • 1970-01-01
  • 2010-10-04
  • 1970-01-01
  • 1970-01-01
  • 2015-08-14
  • 2019-01-07
相关资源
最近更新 更多