6

在 Java 中,我被要求将整数值存储在单链表中,然后打印存储在列表中的元素。这是我想出的:

int max = 10;
List<Integer> list = new ArrayList<Integer>();

for (int num = 0; i < max; i++){
     list.add(num);
}
System.out.print(list);

我想知道,ArrayList 和单链表是一样的吗?我想确保我正确地回答了这个问题。这有意义吗?谢谢!

4

6 回答 6

5

不 -ArrayList根本不是链表 - 它是一个数组列表。ArrayList将其元素存储在数组中,而链表通过将对象链接在一起将它们存储在任意内存中。

LinkedList是一个双向链表,我敢肯定,有各种单链表实现可供您使用,但鉴于这是一个作业,如果您尝试使用某人提交代码,您将被标记或彻底失败else 的实现。

相反,找到一篇描述链表的文章等,并尝试自己实现一个。

通常,这些是通过具有包含类型和值SomeClass的前向链接的类在 java 中构建的。您可以通过前向链接将每个实例链接到下一个实例来SomeClass构建列表。SomeClass

于 2012-12-13T01:47:45.813 回答
2

NoArrayList绝对和单链表不一样。事实上,它根本不是一个链表:它是一个使用数组作为后备存储的列表。这使您可以ArrayList按任意顺序访问,而不是必须按顺序访问的链表。

Java 库有一个双向链表,但没有单链表;你需要自己写。

互联网上有几个很好的实现;在 codereview 网站上查看这个答案,以获得有关如何实现您自己的单链表的一些想法。

于 2012-12-13T01:43:57.157 回答
1

不,ArrayListList使用支持数组存储数据的接口的实现。听起来任务希望您编写自己的单链接 List实现。

于 2012-12-13T01:43:22.310 回答
1

不, anArrayList由数组支持。数组利用连续存储(即数组的开头 + 数组中存储的任何大小的偏移量 == 下一个元素)。Java 有一个LinkedList类,然而,这是一个双向链表,这意味着它包含两个引用:一个指向前一个元素,一个指向下一个元素。

Java 没有单链表作为内置数据结构。问题是要求您编写自己的单链表实现,或者当它说使用单链表时是不正确的。

于 2012-12-13T01:45:22.327 回答
1

名称"Array"List 表明底层实现使用“数组”进行管理。每当我们谈论"Linked"列表时,我们实际上是在考虑“节点”列表,即每个元素都有一个指向前向节点的指针(如果是双向链表,则为前一个节点)。至少这就是这本 DSA 书(Granville Barnett 和 Luca Del Tongo 所著)所说的。

于 2015-02-12T22:39:57.767 回答
0

在商业生活中,您的解决方案是完美的,但不幸的是,似乎要求您使用在标准 Java 中不存在的单链接列表。(并且没有多大意义)对于培训目的,您必须编写自己的列表。

于 2012-12-13T01:49:34.830 回答