关于LinkedList和LinkedListNode

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级文档组里的最后一个,因为,此时他一定最晚的
LinkedList 是 C# 中的一种数据结构,它是一个双向链表,可以用来存储和操作一系列的节点。每个节点包含一个值和对前一个节点和后一个节点的引用。 要使用 LinkedList,你需要在代码中引入 System.Collections.Generic 命名空间。下面是一个简单的示例代码,展示了如何使用 LinkedList: ```csharp using System; using System.Collections.Generic; class Program { static void Main(string[] args) { // 创建一个 LinkedList 实例 LinkedList<string> linkedList = new LinkedList<string>(); // 添加元素到链表中 linkedList.AddLast("Apple"); linkedList.AddLast("Banana"); linkedList.AddLast("Orange"); // 遍历链表并输出元素 foreach (string fruit in linkedList) { Console.WriteLine(fruit); } // 在指定节点之前插入新节点 LinkedListNode<string> node = linkedList.Find("Banana"); linkedList.AddBefore(node, "Grape"); // 在指定节点之后插入新节点 node = linkedList.Find("Banana"); linkedList.AddAfter(node, "Pineapple"); // 遍历链表并输出元素 foreach (string fruit in linkedList) { Console.WriteLine(fruit); } } } ``` 这个示例代码创建了一个 LinkedList 实例,并向其中添加了几个水果。然后,它使用 foreach 循环遍历链表并输出元素。接着,在指定的节点之前和之后插入了新的节点,并再次遍历链表以验证插入操作。 注意,LinkedList 是一种动态数据结构,可以在运行时动态添加或删除节点,因此它在某些场景下比较适用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值