LinkedList是一种线性数据结构,可将元素存储在非连续位置。链接列表中的元素使用指针相互链接。换句话说,LinkedList由节点组成,其中每个节点都包含一个数据字段和到列表中下一个节点的引用(链接)。
在C#中,LinkedList是集合的通用类型,它在System.Collections.Generic命名空间中定义。它是一个双向链表,因此,每个节点都指向下一个节点,并指向上一个节点。它是一个动态集合,可以根据您程序的需要进行扩展。它还提供了快速的插入和删除元素。
重要事项:
- LinkedList类实现ICollection
, IEnumerable , IReadOnlyCollection , ICollection , IEnumerable , IDeserializationCallback和ISerializable接口。 - 它还支持枚举器。
- 您可以删除节点,然后将它们重新插入到同一列表或另一个列表中,这样就不会在堆上分配任何其他对象。
- LinkedList
对象中的每个节点的类型为LinkedListNode 。 - 它不支持链接,拆分,循环或其他可能会使列表处于不一致状态的功能。
- 如果LinkedList为空,则First和Last属性包含null。
- LinkedList的容量是LinkedList可以容纳的元素数。
- 在LinkedList中,允许存储重复的但类型相同的元素。
如何创建一个LinkedList?
LinkedList类具有3个用于创建LinkedList的构造函数,如下所示:
- LinkedList():此构造函数用于创建为空的LinkedList类的实例。
- LinkedList(IEnumerable):此构造函数用于创建LinkedList类的实例,该实例包含从指定IEnumerable复制的元素,并具有足够的容量来容纳复制的元素数量。
- LinkedList(SerializationInfo,StreamingContext):此构造函数用于创建LinkedList类的实例,该实例可使用指定的SerializationInfo和StreamingContext进行序列化。
让我们看看如何使用LinkedList()构造函数创建一个LinkedList:
步骤1:借助using关键字,在程序中包含System.Collections.Generic命名空间:
using System.Collections.Generic;
步骤2:使用LinkedList类创建一个LinkedList,如下所示:
LinkedList
步骤3: LinkedList提供了4种不同的方法来添加节点,这些方法是:
- AddAfter:此方法用于在LinkedList中的现有节点之后添加新节点或值。
- AddBefore:此方法用于在LinkedList中的现有节点之前添加新节点或值。
- AddFirst:此方法用于在LinkedList的开始处添加新的节点或值。
- AddLast:此方法用于在LinkedList的末尾添加新的节点或值。
步骤4:通过使用foreach循环或使用for循环访问LinkedList的元素。如下例所示。
例子:
// C# program to illustrate how
// to create a LinkedList
using System;
using System.Collections.Generic;
class GFG {
// Main Method
static public void Main()
{
// Creating a linkedlist
// Using LinkedList class
LinkedList my_list = new LinkedList();
// Adding elements in the LinkedList
// Using AddLast() method
my_list.AddLast("Zoya");
my_list.AddLast("Shilpa");
my_list.AddLast("Rohit");
my_list.AddLast("Rohan");
my_list.AddLast("Juhi");
my_list.AddLast("Zoya");
Console.WriteLine("Best students of XYZ university:");
// Accessing the elements of
// LinkedList Using foreach loop
foreach(string str in my_list)
{
Console.WriteLine(str);
}
}
}
Best students of XYZ university:
Zoya
Shilpa
Rohit
Rohan
Juhi
Zoya
如何从LinkedList中删除元素?
在LinkedList中,允许从LinkedList中删除元素。 LinkedList
- Clear():此方法用于从LinkedList中删除所有节点。
- Remove(LinkedListNode):此方法用于从LinkedList中删除指定的节点。
- Remove(T):此方法用于从LinkedList中删除第一次出现的指定值。
- RemoveFirst():此方法用于删除LinkedList开头的节点。
- RemoveLast():此方法用于删除LinkedList末尾的节点。
例子:
// C# program to illustrate how to
// remove elements from LinkedList
using System;
using System.Collections.Generic;
class GFG {
// Main Method
static public void Main()
{
// Creating a linkedlist
// Using LinkedList class
LinkedList my_list = new LinkedList();
// Adding elements in the LinkedList
// Using AddLast() method
my_list.AddLast("Zoya");
my_list.AddLast("Shilpa");
my_list.AddLast("Rohit");
my_list.AddLast("Rohan");
my_list.AddLast("Juhi");
my_list.AddLast("Zoya");
// Inital number of elements
Console.WriteLine("Best students of XYZ "+
"university initially:");
// Accessing the elements of
// Linkedlist Using foreach loop
foreach(string str in my_list)
{
Console.WriteLine(str);
}
// After using Remove(LinkedListNode)
// method
Console.WriteLine("Best students of XYZ"+
" university in 2000:");
my_list.Remove(my_list.First);
foreach(string str in my_list)
{
Console.WriteLine(str);
}
// After using Remove(T) method
Console.WriteLine("Best students of XYZ"+
" university in 2001:");
my_list.Remove("Rohit");
foreach(string str in my_list)
{
Console.WriteLine(str);
}
// After using RemoveFirst() method
Console.WriteLine("Best students of XYZ"+
" university in 2002:");
my_list.RemoveFirst();
foreach(string str in my_list)
{
Console.WriteLine(str);
}
// After using RemoveLast() method
Console.WriteLine("Best students of XYZ"+
" university in 2003:");
my_list.RemoveLast();
foreach(string str in my_list)
{
Console.WriteLine(str);
}
// After using Clear() method
my_list.Clear();
Console.WriteLine("Number of students: {0}",
my_list.Count);
}
}
Best students of XYZ university initially:
Zoya
Shilpa
Rohit
Rohan
Juhi
Zoya
Best students of XYZ university in 2000:
Shilpa
Rohit
Rohan
Juhi
Zoya
Best students of XYZ university in 2001:
Shilpa
Rohan
Juhi
Zoya
Best students of XYZ university in 2002:
Rohan
Juhi
Zoya
Best students of XYZ university in 2003:
Rohan
Juhi
Number of students: 0
如何检查LinkedList中元素的可用性?
在LinkedList中,可以使用Contains(T)方法检查给定值是否存在。此方法用于确定值是否在LinkedList中。
例子:
// C# program to illustrate how
// to check whether the given
// element is present or not
// in the LinkedList
using System;
using System.Collections.Generic;
class GFG {
// Main Method
static public void Main()
{
// Creating a linkedlist
// Using LinkedList class
LinkedList my_list = new LinkedList();
// Adding elements in the Linkedlist
// Using AddLast() method
my_list.AddLast("Zoya");
my_list.AddLast("Shilpa");
my_list.AddLast("Rohit");
my_list.AddLast("Rohan");
my_list.AddLast("Juhi");
// Check if the given element
// is available or not
if (my_list.Contains("Shilpa") == true)
{
Console.WriteLine("Element Found...!!");
}
else
{
Console.WriteLine("Element Not found...!!");
}
}
}
Element Found...!!