- 如何创建一个LinkedList?
- 如何从LinkedList中删除元素?
- 如何检查LinkedList中元素的可用性?
在C#中,LinkedList是集合的泛型类型,它在System.Collections.Generic命名空间中定义。它是一个双向链表,因此,每个节点都指向下一个节点,并指向前一个节点。它是一个动态的集合,根据程序的需要而不断增长。它还提供快速插入和删除元素。
文章图片
C#链表实现重要事项:
- LinkedList类实现ICollection < T> , IEnumerable < T> , IReadOnlyCollection < T> , ICollection, IEnumerable, IDeserializationCallback和可序列化接口。
- 它还支持枚举器。
- 你可以删除节点并将它们重新插入同一列表或另一个列表中, 这将导致在堆上没有分配其他对象。
- LinkedList < T> 对象中的每个节点的类型为LinkedListNode < T> 。
- 它不支持链接, 拆分, 循环或其他可能会使列表处于不一致状态的功能。
- 如果LinkedList为空, 则First和Last属性包含null。
- LinkedList的容量是LinkedList可以容纳的元素数。
- 在LinkedList中, 允许存储重复的但类型相同的元素。
如何创建一个LinkedList? LinkedList类具有3个用于创建LinkedList的构造函数, 如下所示:
- LinkedList():此构造函数用于创建为空的LinkedList类的实例。
- LinkedList(IEnumerable):此构造函数用于创建LinkedList类的实例, 该实例包含从指定的IEnumerable复制的元素, 并具有足够的容量来容纳复制的元素数量。
- LinkedList(SerializationInfo, StreamingContext):此构造函数用于创建LinkedList类的实例, 该实例可使用指定的SerializationInfo和StreamingContext进行序列化。
第1步:包括System.Collections.Generic在程序的帮助下命名空间使用关键词:
using System.Collections.Generic;
【C#中的链表实现代码示例和原理解释】第2步:使用LinkedList类创建一个LinkedList, 如下所示:
LinkedList < Type_of_linkedlist> linkedlist_name = new LinkedList < Type_of_linkedlist> ();第三步:LinkedList提供了4种不同的方法来添加节点, 这些方法是:
- AddAfter:此方法用于在LinkedList中的现有节点之后添加新节点或值。
- AddBefore:此方法用于在LinkedList中的现有节点之前添加新节点或值。
- AddFirst:此方法用于在LinkedList的开头添加新节点或值。
- AddLast:此方法用于在LinkedList的末尾添加新节点或值。
C#链表实现代码例子:
//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<
String>
my_list = new LinkedList<
String>
();
//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 < T> 类提供5种不同的方法来删除元素, 这些方法是:
- 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<
String>
my_list = new LinkedList<
String>
();
//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中, 你可以使用来检查给定值是否存在含(T)方法。此方法用于确定值是否在LinkedList中。
C#的链表实现代码例子如下:
//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<
String>
my_list = new LinkedList<
String>
();
//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...!!
以上就是C#链表原理及其具体实现代码的全部内容。
推荐阅读
- PHP Ds\Vector contains()函数用法详细示例
- Dijkstra算法(邻接表表示的算法实现|贪婪算法S8)
- TCP连接终止详细指南和解读
- JavaScript如何设置input字段的值(代码示例)
- JavaScript while循环语句例子详细指南
- Win8 Word文件默认为只读怎样处理?
- Win8.1笔记本拔掉电源线时黑屏如何修好?
- 如何取消Win8系统对20%网速的局限?
- 如何正确地给Win8电脑清理灰尘?