【问题标题】:Queue ADT exam practice排队 ADT 考试练习
【发布时间】:2014-03-21 04:33:11
【问题描述】:

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

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

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

size操作的伪代码是什么?

评论您对删除和大小的实施效率 操作。

【问题讨论】:

    标签: algorithm queue


    【解决方案1】:

    删除操作的伪代码:

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

    大小操作的伪代码:

    size = value of back + 1
    

    效率:Order(1) 或恒定时间

    【讨论】:

      【解决方案2】:

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

      这样:

      1. 删除操作 if(front<=back) { returnValue = Q[front]; front++; return returnValue; }
      2. 大小操作 return back-front+1;

      两个时间复杂度都是 O(1)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-07-25
        • 2015-09-16
        • 2018-05-10
        • 2020-07-01
        • 2023-04-10
        • 2018-05-13
        • 2015-02-22
        相关资源
        最近更新 更多