在C#中,LinkedList 是一个双向链表,属于 System.Collections.Generic 命名空间。双向链表中的每个元素都是一个节点,它存储了数据和指向前一个节点以及后一个节点的引用。
以下是C#中LinkedList的一些基本操作:
初始化:
LinkedList<int> linkedList = new LinkedList<int>();
添加元素 - 使用 AddLast 方法将元素添加到链表的末尾:
linkedList.AddLast(1);
插入元素 - 使用 AddBefore 或 AddAfter 方法在特定节点之前或之后插入一个新节点:
LinkedListNode<int> node = linkedList.First; // 获取第一个节点
linkedList.AddBefore(node, 0); // 在第一个节点之前插入元素0
添加到头部 - 使用 AddFirst 方法将元素添加到链表的开头:
linkedList.AddFirst(-1);
访问元素 - 使用 First 和 Last 属性访问链表的第一个和最后一个元素:
int firstItem = linkedList.First.Value;
int lastItem = linkedList.Last.Value;
移除元素 - 使用 Remove 方法根据值移除链表中的元素:
linkedList.Remove(1);
移除特定节点 - 使用 Remove 方法根据 LinkedListNode 移除节点:
LinkedListNode<int> nodeToRemove = linkedList.First;
linkedList.Remove(nodeToRemove);
查找元素 - 使用 Find 方法查找链表中第一个匹配指定值的节点:
LinkedListNode<int> node = linkedList.Find(1);
获取链表中元素的数量 - 使用 Count 属性:
int count = linkedList.Count;
清空链表 - 使用 Clear 方法:
linkedList.Clear();
遍历链表 - 使用 foreach 循环或 GetEnumerator 方法遍历链表中的所有元素:
foreach (int item in linkedList)
{
Console.WriteLine(item);
}
反转链表 - 使用 Reverse 方法:
linkedList.Reverse();
下面是一个简单的C# LinkedList 使用示例:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
LinkedList<int> linkedList = new LinkedList<int>();
// 添加元素到链表
linkedList.AddLast(1);
linkedList.AddLast(2);
linkedList.AddLast(3);
// 添加元素到链表头部
linkedList.AddFirst(0);
// 插入元素到特定节点之前
linkedList.AddBefore(linkedList.First.Next, -1);
// 访问元素
int firstItem = linkedList.First.Value;
int lastItem = linkedList.Last.Value;
// 移除元素
linkedList.Remove(1);
// 移除特定节点
LinkedListNode<int> nodeToRemove = linkedList.Find(2);
if (nodeToRemove != null)
{
linkedList.Remove(nodeToRemove);
}
// 查找元素
LinkedListNode<int> node = linkedList.Find(0);
// 打印链表中的所有元素
foreach (int item in linkedList)
{
Console.WriteLine(item);
}
// 获取链表中元素的数量
int count = linkedList.Count;
// 清空链表
linkedList.Clear();
// 反转链表
linkedList.AddLast(4);
linkedList.AddLast(5);
linkedList.Reverse();
// 打印反转后的链表元素
Console.WriteLine("Reversed LinkedList:");
foreach (int item in linkedList)
{
Console.WriteLine(item);
}
}
}
想了解更多游戏开发知识,可以扫描下方二维码,免费领取游戏开发4天训练营课程