您好我正在为算法设计语言编写一个用于模拟测试的算法,用于将元素添加到优先级队列。
现在我计划通过使用将元素插入到后面的常规队列中的一般方法,然后通过将它(根据优先级值)与位于其之前的元素进行比较,将其排序到正确的位置来实现此目的。优先队列。
这是我到目前为止的算法(仅用于将项目添加到优先级队列):
程序 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,表示队列中没有更多元素?或者我在这里采取了错误的做法?
我很困惑这是如何工作的,如果有人能澄清我会非常感激!三江源。
答案 0 :(得分:2)
java中的优先级队列是动态,它们可以包含最少数量的元素,但是你放入它们的最大元素数量由你自己决定。如果你想要的话要通过队列来确定最后一个元素是什么,或者找出最后一个元素在任何位置的位置,你需要一个迭代器对象来帮助你做到这一点。 / p>