C# 链表
介绍
链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的引用。它允许快速插入和删除操作,但随机访问操作较慢。
节点结构
一个链表节点通常包含两个字段:
数据字段:
存储实际数据。
引用字段:
指向下一个节点的引用,最后一个节点的引用为 null。
链表类型
C# 提供了以下链表类型:
LinkedList:
泛型链表,允许存储任何类型的对象。
System.Collections.Generic.LinkedListNode:
链表节点的泛型版本。
基本操作
插入
要在链表中插入一个新节点,可以使用以下方法:
`AddFirst(T value)`:在链表开头插入一个新节点。
`AddLast(T value)`:在链表结尾插入一个新节点。
`AddBefore(LinkedListNode node, T value)`:在指定的节点之前插入一个新节点。
`AddAfter(LinkedListNode node, T value)`:在指定的节点之后插入一个新节点。
删除
要从链表中删除一个节点,可以使用以下方法:
`RemoveFirst()`:从链表开头删除一个节点。
`RemoveLast()`:从链表结尾删除一个节点。
`Remove(LinkedListNode node)`:删除指定的节点。
遍历
可以使用以下方法遍历链表:
`GetEnumerator()`:返回一个枚举器,可逐个遍历链表中的节点。
`First`:指向链表中的第一个节点。
`Last`:指向链表中的最后一个节点。
示例
创建一个链表并插入一些值:```csharp
LinkedList list = new LinkedList();
list.AddFirst(10);
list.AddLast(20);
list.AddBefore(list.First, 5);
```遍历并打印链表中的值:```csharp
foreach (int value in list)
{Console.WriteLine(value);
}
```输出:```
5
10
20
```
**C
链表****介绍**
链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的引用。它允许快速插入和删除操作,但随机访问操作较慢。**节点结构**
一个链表节点通常包含两个字段:* **数据字段:**存储实际数据。
* **引用字段:**指向下一个节点的引用,最后一个节点的引用为 null。**链表类型**C
提供了以下链表类型:* **LinkedList:**泛型链表,允许存储任何类型的对象。
* **System.Collections.Generic.LinkedListNode:**链表节点的泛型版本。**基本操作****插入**
要在链表中插入一个新节点,可以使用以下方法:* `AddFirst(T value)`:在链表开头插入一个新节点。
* `AddLast(T value)`:在链表结尾插入一个新节点。
* `AddBefore(LinkedListNode node, T value)`:在指定的节点之前插入一个新节点。
* `AddAfter(LinkedListNode node, T value)`:在指定的节点之后插入一个新节点。**删除**
要从链表中删除一个节点,可以使用以下方法:* `RemoveFirst()`:从链表开头删除一个节点。
* `RemoveLast()`:从链表结尾删除一个节点。
* `Remove(LinkedListNode node)`:删除指定的节点。**遍历**
可以使用以下方法遍历链表:* `GetEnumerator()`:返回一个枚举器,可逐个遍历链表中的节点。
* `First`:指向链表中的第一个节点。
* `Last`:指向链表中的最后一个节点。**示例**创建一个链表并插入一些值:```csharp
LinkedList list = new LinkedList();
list.AddFirst(10);
list.AddLast(20);
list.AddBefore(list.First, 5);
```遍历并打印链表中的值:```csharp
foreach (int value in list)
{Console.WriteLine(value);
}
```输出:```
5
10
20
```