2013-04-04 110 views
0

嗨我正在寫一個算法設計語言的模擬測試,用於添加一個元素到優先級隊列。優先級隊列可以有空元素(如數組)嗎?

現在我打算通過使用將元素插入到常規隊列後面的常規方法來完成此操作,然後通過將元素與優先級值(根據優先級值)進行比較,將其排序到正確的位置在優先隊列中。

這是算法我到目前爲止(僅用於將項目添加到優先級隊列):

  • 元件 - 元素被添加到隊列中。
  • 隊列[] - 正在添加優先級隊列元素。
  • n - 優先級隊列的大小。
  • 尾部 - 優先級隊列中的最後一個元素。

過程 AddQ(IN元件,INOUT隊列[],IN N,INOUT尾)

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

我什麼不確定是否應該有p。的部分說明隊列已滿。我正確的想法是,優先級隊列在尾部元素中有一個指向null的指針,表示沒有剩下元素了?

如果是這樣,這意味着優先級隊列不能像新的元素那樣具有空白空間(例如標準數組),因爲優先級隊列中的尾部指向空,並且隊列中沒有更多元素?或者我在這裏採取了錯誤的方法?

我很困惑這是如何工作的,如果有人能澄清我會非常感激!謝謝。

回答

2

java中的優先級隊列是動態,它們可以有最小數量的元素需要在它們中,但是放入其中的元素的最大數量由您決定。如果您想要通過排隊找出最後一個元素是什麼或者找出最後一個元素在哪裏,你需要一個迭代器對象,它可以幫助你做到這一點。