2012-10-25 80 views
2

我一直試圖弄清楚最近一項任務的問題,現在幾天了,而且我似乎無法把頭圍繞在它周圍。問題如下:使用鏈接列表的Java優先級隊列

創建一個包含兩個字段noOfPriorities 和一個LinkedList一個PriorityQueue類......它應該有一個構造函數中的一個int 值賦值給noOfPriorities ......同時添加作爲 許多LinkedLists作爲返回下一 優先元素numberOfPriorities ..排入方法,在 需要一個優先級和對象..出列方法...,並從列表中刪除...

我的問題的很大一部分是我無法確定的這正是教授正在尋找的東西,因爲措辭對我來說似乎有點奇怪......只是詢問它也沒有幫助。

只是爲了澄清,我沒有找人給我答案。我只是在尋找正確的方向。如果有人可以幫助它將不勝感激。

+0

'添加儘可能多的LinkedLists' - >如何將一個鏈表添加到'LinkedList'?這是完整的問題陳述嗎?實際上,你應該請教授做一些澄清,那麼你的'LinkedList'包含什麼?你如何將'LinkedList'添加到'LinkedList'? –

回答

3

對這個作業是誠實的歡呼聲。

我認爲如果您閱讀優先級隊列是什麼,您可以更好地理解問題。

讓我們舉一個小例子。你有幾個任務要做,每個任務都有優先權。

  • 小學1 - 呼吸,吃飯,睡覺
  • 小學2 - 研究,發揮
  • 小學3 - 看電影

所有上述信息可以通過您的PriorityQueue處理。你有3種優先級,所以你有3個列表。每個列表都用於維護具有相同優先級的任務。

一旦通過調用PriorityQueue(3)構造空的PriorityQueue,就可以向其添加任務。

假設你想添加優先級爲2的任務「學習」。 可以說,priorityQueue.enqueue(2,「study」)。然後,您將進入維護優先級2項目的列表,並將任務「study」添加到該列表。

同樣,當你想知道下一個優先級3項是什麼時,你可以說priorityQueue.dequeue(3)。然後,您會找到處理優先級3項目的列表,並從該列表中刪除最後一個元素。

這應該給你一個很好的理解,開始工作。 :)

+0

謝謝!在這些條件下,它是完全有道理:) –

+0

@stacktrace:保持回答夥計:) – UmNyobe

0

同意,這項任務措辭嚴厲。

同時添加多個LinkedLists作爲numberOfPriorities ..

這也許應該是「在同一時間加入儘可能多的節點LinkedList的爲numberOfPriorities ..「

下一個問題要問自己的,只是什麼類型的,我應該存儲在所有這些鏈接節點的事......?

0

我想你需要鏈表而不是一個數組。問題描述是矛盾的,他說,你既需要有一個鏈表一類,而當你構建一個對象來創建其中一些

下面是你的類的構造函數:

MyPriorityQueue(int npriorities) 
{ 
    noOfPriorities = npriorities; 
    queueArray = new ArrayList<List<T>>(); 
    for (int i = 0; i < npriorities; ++i) queueArray.add(new LinkedList<T>()); 
} 

然後,您會將優先級映射到隊列。你的enqueue方法將獲得一個對象和一個優先級(一個表示優先級的int),並將該對象添加到由優先級指定的隊列中。您的出隊方法只會將最高優先級隊列的末尾返回一個元素。

有意義嗎?