📅  最后修改于: 2023-12-03 14:40:29.320000             🧑  作者: Mango
C#中的LinkedList
类是一个双向链表,用于存储和操作数据集合。它可以在O(1)时间复杂度内执行添加、移除和查找操作,这使得它在大数据量的情况下比List
更有效率。
LinkedList
在C#中创建LinkedList
对象的方式非常简单:
LinkedList<int> linkedList = new LinkedList<int>();
这里创建了一个空的LinkedList
,用于存储int
类型的数据。你也可以创建一个包含初始数据的LinkedList
,例如:
LinkedList<int> linkedList = new LinkedList<int>(new[] { 1, 2, 3 });
这里创建了一个包含整数1
、2
、3
的LinkedList
。
注意:和数组不同,LinkedList
是动态的数据结构,它可以无限增长,所以你在创建时不需要指定它的大小。
LinkedList
提供了多种方法用于添加和移除链表中的元素。例如,在链表末尾添加一个元素:
linkedList.AddLast(4);
这里将数字4
添加到了链表的末尾。类似地,如果你想在链表开头添加一个元素:
linkedList.AddFirst(0);
这里将数字0
添加到了链表的开头。
如果你需要从链表中移除一个元素,并返回它的值,可以使用RemoveLast()
或RemoveFirst()
方法:
int lastValue = linkedList.RemoveLast();
int firstValue = linkedList.RemoveFirst();
这里移除了链表中的最后一个和第一个元素,并用了两个新变量储存被移除元素的值。
另一种移除元素的方式是使用Remove()
方法,这个方法需要传入一个要移除的LinkedListNode
对象:
LinkedListNode<int> node = linkedList.First;
linkedList.Remove(node);
这里通过First
属性获取链表中第一个元素的LinkedListNode
,并将它移除。
使用LinkedList
类遍历元素,有两种主要的方式:通过LinkedListNode
对象或使用foreach
循环。
第一种方式需要手动创建一个LinkedListNode
对象,并使用它的Next
或Previous
属性遍历到下一个或上一个元素。例如:
LinkedListNode<int> node = linkedList.First;
while (node != null)
{
Console.WriteLine(node.Value);
node = node.Next;
}
这里使用一个while
循环遍历链表中的所有元素,并输出它们的值。
第二种方式则更为简单,只需要使用foreach
循环遍历链表中的元素即可:
foreach (var value in linkedList)
{
Console.WriteLine(value);
}
这里使用foreach
循环遍历链表中的元素,并输出它们的值。
使用LinkedList
类获取和查找元素,同样有两种方式。第一种是通过LinkedListNode
对象,它提供了多个属性来访问链表中的元素。例如:
LinkedListNode<int> node = linkedList.First;
int firstValue = node.Value;
int lastValue = node.List.Last.Value;
这里使用First
属性获取链表中的第一个元素,然后使用它的Value
属性获取元素的值。同时,也可以通过List
属性获取链表本身,并使用Last
属性获取最后一个元素的值。
另一种方式是,使用Contains()
方法查找一个元素是否存在于链表中:
bool containsValue = linkedList.Contains(2);
这里查找了数字2
是否存在于链表中,返回的结果为布尔值。
除了上述操作外,LinkedList
类还提供了诸如Clear()
、CopyTo()
、Find()
、FindLast()
、AddAfter()
、AddBefore()
等多个方法,你可以根据实际需要使用。
LinkedList
类是C#中非常有用的一个双向链表,它可以高效地存储和操作数据集合。在日常工作中,你可以使用它来优化程序的性能,实现更多有趣的功能。