优先级队列可以有空元素(如数组)吗?

时间:2013-04-04 19:23:28

标签: linked-list queue element priority-queue

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

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

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

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

程序 AddQ( IN 元素, INOUT queue [], IN n, INOUT < / strong> tail)

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

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

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

我很困惑这是如何工作的,如果有人能澄清我会非常感激!三江源。

1 个答案:

答案 0 :(得分:2)

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