关于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级文档组里的最后一个,因为,此时他一定最晚的
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级文档组里的最后一个,因为,此时他一定最晚的
相关文章推荐
- 关于数据LinkedList的removefirst出错
- C#对LinkedListNode排序
- 9.链表中倒数第k个结点[FindReverseKthLinkedListNode]
- C++: delete a node from linked list
- Linked List part1 : node
- a linked list, find the node that the last node point to.
- LinkedList<T>.AddLast 方法 (LinkedListNode<T>)
- 关于LinkedList以及ArrayList的一些小练习剖析
- 关于 ArrayList,Vector, LinkedList 的问答题
- 关于LinkedList和ArrayList的执行效率的问题的区别(测试用例)
- 关于LinkedList和ArrayList 插入元素的性能比较疑惑,知道的请指教......
- 【Hackerrank】Insert a node into a sorted doubly linked list
- Copy LinkedList With Arbitrary Node
- 黑马程序员——关于LinkedList集合的索引
- [CrackCode] 2.3 Delete a node in the middle of a single linked list
- 关于LinkedList的三种写法的效率
- 【11】Delete a node in the middle of a single linked list
- Ch2-3: remove the middle node in a singly linked list
- 2014微软试题-LinkedListNode
- LeetCode[Linked List]: Remove Nth Node From End of List