2

几天来,我一直在试图找出一个关于最近作业的问题,但我似乎无法解决这个问题。问题如下:

创建一个包含两个字段 noOfPriorities 和一个 LinkedList 的 PriorityQueue 类……它应该有一个接受 int 值的构造函数,将该值分配给 noOfPriorities……同时添加与 numberOfPriorities 一样多的 LinkedLists ……具有优先级的入队方法和一个对象......返回下一个优先级元素的出队方法......并将其从列表中删除......</p>

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

澄清一下,我不是在寻找任何人给我答案。我只是在寻找正确的方向。如果有人可以提供帮助,将不胜感激。

4

3 回答 3

3

干杯诚实关于这是家庭作业。

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

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

  • Pri 1 - 呼吸、吃饭、睡觉
  • Pri 2 - 学习、玩耍
  • 小学 3 - 看电影

以上所有信息都可以由您的 PriorityQueue 处理。你有 3 种优先级,所以你有 3 个列表。每个列表都是维护具有相同优先级的任务。

一旦通过调用 PriorityQueue(3) 构造了空的 PriorityQueue,就可以向其中添加任务。

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

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

这应该让您对开始工作有一个很好的理解。:)

于 2012-10-25T17:40:57.820 回答
0

同意,任务的措辞很糟糕。

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

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

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

于 2012-10-25T17:41:00.223 回答
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 方法将简单地返回包含元素的最高优先级队列的末尾。

有意义吗?

于 2012-10-25T17:45:27.780 回答