3

我在 .net 采访中被问到 .net 中链表的意义。我回答说,在你必须进行大量插入的地方使用链表,但我从未在我编写的任何代码中使用链表。然后面试官告诉我,.net 中的所有列表都使用linkedlist 作为其底层类型。当我回到家时,我在网上找不到任何东西来支持他的说法。任何人都可以评论他的声明的有效性吗?

4

3 回答 3

6

我认为你的面试官完全错了。 根据定义, LinkedList是一个相互连接的实体列表,因此为了到达某个项目X,您需要遍历所有列表,一直到该项目。您无法通过索引访问该项目(只是一个示例)。 LinkedList只是一个不同的数据结构,并且可以肯定它没有用于所有BCL列表类型。

当您要链接实体并消耗小内存时,这是非常方便的选择(除了指向邻居的指针之外不需要额外的数据),但是您需要为此付出遍历/挑选/删除/更新速度的成本。

于 2013-07-15T21:05:56.690 回答
4

对我来说听起来像是 BS。如果您使用反射或检查.net / mono源代码,您可以看到它们使用数组作为基本类型:

private T[] _items;
于 2013-07-15T21:10:21.017 回答
2

MSDN 说这c# List<T>就像一个ArrayList

List 类是 ArrayList 类的通用等价物。它使用一个数组来实现 IList 泛型接口,该数组的大小根据需要动态增加。

意味着平原List<T>不是链表。

于 2013-07-15T21:07:27.127 回答