0

嗨,我正在用算法设计语言编写一个用于模拟测试的算法,用于将元素添加到优先级队列中。

现在我计划通过使用将元素插入到后面的常规队列中的一般方法来做到这一点,然后通过将其(根据优先级值)与位于它之前的元素进行比较来将其排序到正确的位置 -队列。

这是我到目前为止的算法(仅用于将项目添加到优先级队列):

  • element - 要添加到队列中的元素。
  • queue[ ] - 优先队列元素被添加到。
  • n - 优先队列的大小。
  • tail - 优先级队列中的最后一个元素。

过程AddQ(IN元素,INOUT队列[],IN n,INOUT尾部)

if tail= n then
    print (“Queue is full”)
else {
    tail← tail+ 1
    queue (tail) ← element
}

结尾

我不确定的是我是否应该有打印队列已满的部分。我是否认为优先级队列在尾部元素中有一个指向 null 的指针表示没有剩余元素?

如果是这样,这是否意味着优先级队列不能为新元素提供空白空间(例如标准数组),因为优先级队列中的尾部指向 null,表示队列中没有更多元素?还是我在这里采取了错误的方法?

我很困惑这是如何工作的,如果有人能澄清我将非常感激!谢谢你。

4

1 回答 1

2

Java中的优先级队列是动态的,它们可以包含最少数量的元素,但是您放入其中的元素的最大数量由您决定。如果您想通过队列找出什么最后一个元素是或要找出最后一个元素在任何时候的位置,您需要一个迭代器对象来帮助您做到这一点。

于 2013-08-25T10:54:58.487 回答