我们已经获得了使用链接列表实现优先级队列的分配。我想到的逻辑是,如果我向节点添加2个信息部分,一个用于包含要打印的数据&另外,为了存储密钥以对节点进行优先级排序,我可以根据优先级将节点出列。
现在我很困惑,将两个信息部分添加到单个节点是否合法?
像
private class Node {
private int priority;
private String job;
private Node Next;
}
如果它是双向链表,那么反向指针也是必要的。
答案 0 :(得分:0)
将两条信息放在链表中的节点中当然可以。事实上,如果您正在构建优先级队列,您可能需要某种优先级“密钥”来订购您的队列,以及“值”,(也称为“数据”或'有效负载')节点保留以供以后使用。
在您的情况下,String是值,int是键/优先级。除了密钥之外,您可以将此节点视为具有一条信息(字符串)。
如果这不完全是您所追求的,您可以创建一个更灵活的链表,该列表可以在其节点中保存任何数据,包括包含int和String的单个数据。因此,这可以用于优先级队列或在链表上构建的任何其他类型的抽象数据结构。
您的代码看起来像Java,所以如果您想知道如何在Java中创建这个更灵活的节点,您可以查看Generics in Java。