【问题标题】:Having More than One Info Part in LinkedListLinkedList 中有多个信息部分
【发布时间】:2016-07-30 10:49:21
【问题描述】:

我们被分配了使用链表实现优先级队列的任务。我脑海中的逻辑是,如果我向节点添加 2 个信息部分,一个用于包含要打印的数据,另一个用于存储一个键以对节点进行优先级排序,那么我可以根据优先级使节点出队。

现在我只是对将两个信息部分添加到单个节点是否合法感到困惑?

喜欢

private class Node {

  private int priority;
  private String job;
  private Node Next;

}

如果是双向链表,那么反向指针也是必须的。

【问题讨论】:

  • 您似乎要问的是您是否可以向 Node 对象添加多个字段(除了指向列表中其他节点的指针) - 是这样吗?如果是这样,那么你可以,至少在 Java 中,这就是它的样子。更重要的是 - 您是否尝试过添加这两个字段并查看它是否有效?如果没有,它在什么方面不起作用?

标签: linked-list singly-linked-list doubly-linked-list


【解决方案1】:

将两条信息放在链表中的一个节点中当然没问题。事实上,如果您正在构建优先级队列,您可能需要某种优先级“键”来对队列进行排序,以及一个“值”(又名“数据”或“ payload') 节点保留以供以后使用。

在您的情况下,字符串是值,int 是键/优先级。您可以将此节点视为除了其键之外还有一条信息(字符串)。

如果这不是您所追求的,您可以创建一个更灵活的链表,该链表可以在其节点中保存任何数据,包括包含 int 和 String 的单个数据。因此,这可以用于优先级队列或任何其他类型的基于链表的抽象数据结构。

您的代码看起来像 Java,所以如果您想知道如何在 Java 中制作这个更灵活的节点,您可以查看Generics in Java

【讨论】:

  • 感谢 Matt Farrugia,我故意不使用泛型,但是如果我按照您的推荐使用泛型,仍然只有我用来保存数据的信息部分将被转换为通用数据类型,即关键为了优先考虑节点,部分仍将存在,对吗?
  • 您可以将泛型用于保存数据的信息部分,或者同时用于信息和优先级。如果您要使用链接列表创建优先级队列,则任何一个选项都可以。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-15
  • 1970-01-01
  • 2011-01-09
  • 2021-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多