您的位置:首页 > Web前端 > Node.js

关于LinkedList和LinkedListNode

2017-03-22 23:51 344 查看
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级文档组里的最后一个,因为,此时他一定最晚的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: