1.概念:
List是数组链表
LinkedList是指针链表、双向链表选择List还是LinkedList要看你的使用特点.
数组链表访问快,复杂度O(1),但是添加删除复杂度O(n)
指针链表访问复杂度是O(n),但是添加删除很快O(1)
2.含义
LinkedList<T>类在.NET framework中是一个双向链表。这是因为链表中的每一个节点都包含了前一节点和后一节点的指针。每个node代表了一个单独的LinkedListNode<T>对象。 注意链表的每个节点(方块)包含了一个指向下一节点的指针(指向右边的箭头)和一个指向前一节点的指针(指向左边的箭头)。相反,单链表只包含指向下一节点的指针,它没有指向前一节点的指针。
在LinkedList类中,前一节点通过访问Previous属性获得,后一节点通过访问Next属性获得。链表中的第一个节点的Previous属性总是返回null值。两样,最后一个节点的Next属性也是返回null值。 链表中的每个节点(图4-1中用方块表示)实际上都是一个LinkedListNode<T>对象。所以LinkedList<T>对象实际上是由一组LinkedListNode<T>对象组成,所有这些LinkedListNode<T>对象都包含了访问下一个和前一个LinkedListNode<T>对象的属性。LinkedListNode<T>中所包含的对象可以通过Value属性访问。除了这些属性外,LinkedListNode<T>对象还有一个属性叫List,可以用它来访问所属的LinkedList<T>对象。
3.简单介绍一下LinkedList<T>类的方法与属性
Count 返回链表中的元素个数First 返回链表中的第一个节点,其返回的类型是一个节点类LinkedListNode<T>,用它可以迭代集合中的其它节点
Last 返回最后一个节点。。。。略
AddAfter() AddBefore() AddFirst() AddLast()
使用AddXXXX方法,可以在链表中添加元素分别是链表的头部与尾部,还有一个节点的前面与后面
Remove() RemoveFirst() RemoveLast() First与Last分别删除链表的头部元素与尾表元素 , Remove是删除指定的一个匹配对像
Clear()清除所有的元素
Contains() 搜索一个元素,如果找到返回TRUE找不到返回FALSE
Find() 从链表头开始找一个元素,并返回他的节点类,LinkedListNode<T>
FindLast() 与Find()类似,不同的是从尾部来搜
下面开始写示例,示例中使用了一个链表LinkedList<T>与一个列表List<T>
链表包含文档,与我们上一个队列的例子相同,但文档有一个优先级。在链表中,文档按优先级来排序,如查多个文档优先级相同
则按插入时间来决定优先排序
链表添加文档对象时,它们应放在优先级相同的最后一个文档后面,例如:要加一个文档,优先级数是3,那么,我们应放在3级文档组里的最后一个,因为,此时他一定最晚的