在链表中的单个索引处存储超过 1 个数据项?

2023-12-10

我试图在链接列表中的单个索引处存储多个数据项。我教科书中的所有示例似乎都说明每个索引仅添加 1 条数据。我假设可以添加更多吗?

例如,使用 Collections API 来存储整数,我将执行以下操作:

LinkedList <Integer>linky = new LinkedList<Integer>();
int num1 = 2, num2 = 22, num3 = 25, num4 = 1337;
linky.add(num1);

我如何将 num2、num3 和 num4 添加到列表中相同的第一个索引中?多谢你们。


关于链表的工作原理似乎有些混乱。本质上,链表由节点组成,每个节点包含一个数据(准确地说,一个对象,它本身可以包含多个成员变量),以及指向链表中下一个节点的链接(如果存在,则为空指针)没有这样的下一个节点)。您还可以有一个双向链表,其中每个节点还有一个指向列表中前一个节点的指针,以加速某些类型的访问模式。

将多个“数据块”添加到单个节点听起来就像从一个节点添加多个链接,这会将链表变成 N 元tree.

要将多条数据添加到列表末尾,按照与链接列表最常见的关联方式,只需执行以下操作:

LinkedList <Integer>linky = new LinkedList<Integer>();
int num1 = 2, num2 = 22, num3 = 25, num4 = 1337;
linky.add(num1);
linky.add(num2);
linky.add(num3);
linky.add(num4);

或者,如果您希望链表的每个节点都有几条数据

这些数据应该打包成一个object(通过定义一个class将它们全部作为成员变量)。例如:

class GroupOfFourInts
{
   int myInt1;
   int myInt2;
   int myInt3;
   int myInt4;

   public GroupOfFourInts(int a, int b, int c, int d)
   {
     myInt1 = a; myInt2 = b; myInt3 = c; myInt4 = d;
   }
}

class someOtherClass
{

  public static void main(String[] args)
  {
    LinkedList<GroupOfFourInts> linky = new LinkedList<GroupOfFourInts>();
    GroupOfFourInts group1 = new GroupOfFourInts(1,2,3,4);
    GroupOfFourInts group2 = new GroupOfFourInts(1337,7331,2345,6789);
    linky.add(group1);
    linky.add(group2);
  }
}

Now, linky将有 2 个节点,每个节点包含 4 个ints, myInt1, myInt2, myInt3, and myInt4.

Note

以上都不是特定于链表的。每当您想要将一堆数据作为一个单元存储在一起时,就应该使用此模式。您创建一个类,其中包含要存储在一起的每条数据的成员变量,然后创建该类型的任何 Java 集合类型(ArrayList、LinkedList、TreeList...)。

确保您想要使用链表(因为选择 ArrayList 或 TreeList 不会降低编程难度)。这将取决于您的数据访问模式。链表提供 O(1) 的添加和删除,但 O(n) 的查找,而 ArrayList 提供 O(1) 的查找,但 O(n) 的任意添加和删除。 TreeList 提供 O(log n) 插入、删除和查找。这些之间的权衡取决于您拥有的数据量以及您将如何修改和访问数据结构。

当然,如果列表中只有

希望这可以帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在链表中的单个索引处存储超过 1 个数据项? 的相关文章

随机推荐