C# LinkedList<T>
类似 Java 的 LinkedList<T>
,底层使用双向链表。
构造函数
LinkedList<T>()
:默认初始化。LinkedList<T>(IEnumerable<T>)
:复制某集合进行初始化。
属性
Count
:获取列表中节点的个数,内部进行计数维护,时间复杂度为 O(1)First
:获取列表的第一个节点。Last
:获取列表的最后一个节点。
方法
AddFirst(T)
:在列表中的开头处添加指定值的新节点。AddLast(T)
:在列表中的结尾处添加指定值的新节点。AddBefore(LinkedListNode<T>, T)
:在列表中指定现有节点前添加指定值的新节点。AddAfter(LinkedListNode<T>, T)
:在列表中指定现有节点后添加指定值的新节点。RemoveFirst()
:移除位于列表开头处的节点。RemoveLast()
:移除位于列表结尾处的节点。Remove(LinkedListNode<T>)
:移除指定的节点。
以上增删操作不包含定位节点,不需要移动列表中的其他节点,时间复杂度皆为 O(1)。
Find(T)
:查找包含指定值的第一个节点。FindLast(T)
:查找包含指定值的最后一个节点。Contains(T)
:确定某值是否在列表中。Remove(T)
:移除指定的值的第一个匹配的节点。
以上操作直接或间接地定位节点,需要遍历列表,时间复杂度为 O(n)。