嗨,我正在为模拟测试编写算法设计语言,用于将元素添加到优先级队列。
现在,我计划使用一种通用的方法来实现这一点:将一个元素插入到后面的常规队列中,然后通过(根据优先级值)将其与优先级队列中位于其前面的元素进行比较,从而将其排序到正确的位置。
这是我到目前为止的算法(仅用于向优先级队列添加项):
- element-要添加到队列中的元素。
- queue[]-优先级队列元素被添加到。
- n-优先级队列的大小。
- tail-优先级队列的最后一个元素。
程序/strong> AddQ (在元素, INOUT 队列[],在 n, INOUT 尾巴)
if tail= n then
print (“Queue is full”)
else {
tail← tail+ 1
queue (tail) ← element
}
结束strong>
我不确定的是我应该有打印队列已满的部分。我是否认为优先级队列在尾部元素中有一个指向null的指针,表示没有元素剩余?
如果是,这是否意味着优先级队列不能有空空间(如标准数组),因为优先级队列的尾部指向null,表示队列中没有更多的元素?还是我用错方法了?
我很困惑,这是如何工作的,如果有人能澄清我将非常感激!谢谢。
java中的优先级队列是动态的,它们可以有最小数量的元素需要在它们中,但是您放入它们的最大元素数量由您决定。如果你想遍历一个队列,找出最后一个元素是什么,或者找出最后一个元素在任何一点的位置,你需要一个迭代器对象来帮助你做到这一点。