List <T>是一个链表吗?

Joh*_*ona 12 .net c#

是System.Collections.Generic.List<T>一种链表(不是LinkedList<T>类)?

甲链表是由一组一起代表一个序列节点中的数据结构.在最简单的形式下,每个节点由一个数据和一个到序列中下一个节点的引用(换句话说,一个链接)组成.

线性链接列表
链接列表,其节点包含两个字段:整数值和指向下一个节点的链接.
最后一个节点链接到用于表示列表末尾的终止符.

wikipedia.org

如果是,它是什么样的链表?

Jon*_*eet 25

不,List<T>由数组支持 - 它本质上是ArrayList.NET 1.0 的通用版本.来自文档:

该List<T>班是的一般等价ArrayList类.它IList<T>使用一个数组来实现通用接口,该数组的大小根据需要动态增加.

请注意,由于由数组支持,它通过索引器的访问是O(1)而不是链表的O(N).

如果您想要链接列表,请使用LinkedList<T>.请注意,这是一个双重链接的列表.我不相信.NET暴露了单链接列表类型.

  • @JohnIsaiahCarmona:我的意思是它内部有一个数组变量.该数组是固定大小(因为*所有*数组都在.NET中)但是当列表需要增长时,会创建一个新数组并复制现有元素.同样,当您删除某个项目时,它只会将其余元素复制到新的正确位置. (3认同)

Dr.*_*eon 6

List<T>,从...技术角度来看,不是一种链表。

如果你想在 C# 中有一个链表:

  • 要么使用内置LinkedList<T>类型(用于双链表)
  • 或者创建自己的实现(如果你想要一个单链接的) -这是一个例子