具有链接列表的Java优先级队列

时间:2012-10-25 17:32:03

标签: java

我一直试图在最近的任务中找出一个问题几天,我似乎无法绕过它。问题内容如下:

  

创建一个包含两个字段noOfPriorities的PriorityQueue类   和LinkedList ...它应该有一个接受int的构造函数   value将该值赋给noOfPriorities ...同时添加为   许多LinkedLists作为numberOfPriorities ..入队的入队方法   优先级和对象..返回下一个的出列方法   优先级元素...并将其从列表中删除...

我的问题的很大一部分是我无法准确确定教授正在寻找什么,因为对我来说措辞似乎有点奇怪......只是询问它也没有帮助。

只是为了澄清,我不是在寻找任何人给我答案。我只是想朝着正确的方向努力。如果有人可以帮助它将不胜感激。

3 个答案:

答案 0 :(得分:3)

诚实地说这是家庭作业。

如果您了解优先级队列是什么,我认为您可以更好地理解问题。

我们举一个小例子。您有几项任务要做,每项任务都有优先级。

  • Pri 1 - 呼吸,吃饭,睡觉
  • Pri 2 - 学习,玩
  • Pri 3 - 观看电影

您可以使用PriorityQueue处理上述所有信息。您有3种优先级,因此您有3个列表。每个列表都是为了维护具有相同优先级的任务。

通过调用PriorityQueue(3)构造空的PriorityQueue后,您可以向其添加任务。

假设您要添加优先级为2的任务“study”。 你可以说,priorityQueue.enqueue(2,“study”)。然后,您将转到维护优先级为2的项目的列表,并将任务“study”添加到该列表中。

同样,当你想知道下一个优先级3项是什么时,你可以说,priorityQueue.dequeue(3)。然后,您将找到处理优先级3项的列表,并从该列表中删除最后一个元素。

这应该让你很好地理解开始工作。 :)

答案 1 :(得分:0)

同意,作业措辞严厉。

  

同时添加与numberOfPriorities一样多的LinkedLists ..

这应该是“同时将与LinkedList 一样多的节点添加为numberOfPriorities ..”

要问自己的下一个问题是,我应该在所有这些链接节点中存储什么类型的东西......?

答案 2 :(得分: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),并将该对象添加到由优先级指定的队列中。你的dequeue方法只会返回最高优先级队列的末尾,其中包含一个元素。

有道理吗?