当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C# LinkedList用法及代码示例


LinkedList<T> 类存在于 System.Collections.Generic 命名空间中。这种通用类型允许快速插入和删除元素。它实现了一个经典的链表。每个对象都是单独分配的。在 LinkedList 中,某些操作不需要复制整个集合。但在许多常见情况下,LinkedList 会影响性能。

LinkedList 类的特征:

  • 链表<T>是一个通用链表。它支持枚举器。
  • 插入和移除是O(1)运营。
  • 您可以删除节点并重新插入它们,无论是在同一个列表中还是在另一个列表中,这都会导致堆上不会分配任何其他对象。
  • 由于列表还维护内部计数,因此获取 Count 属性是一个 O(1) 操作。
  • LinkedList 中的每个节点<T> 对象的类型为 LinkedListNode<T>。
  • LinkedList 类不支持链接、拆分、循环或其他可能使列表处于不一致状态的函数。
  • 如果LinkedList为空,则第一的最后的属性包含 null。
  • LinkedList 是双向链接的,因此,每个节点向前指向下一个节点,向后指向上一个节点。

Constructors

构造函数 说明
LinkedList() 初始化 LinkedList 类的空新实例。
LinkedList(IEnumerable) 初始化 LinkedList 类的新实例,该实例包含从指定 IEnumerable 复制的元素,并且具有足够的容量来容纳复制的元素数量。
LinkedList(SerializationInfo, StreamingContext) 初始化 LinkedList 类的新实例,该实例可使用指定的 SerializationInfo 和 StreamingContext 进行序列化。

例子:


// C# code to create a LinkedList 
using System; 
using System.Collections; 
using System.Collections.Generic; 
  
class GFG { 
  
    // Driver code 
    public static void Main() 
    { 
  
        // Creating a LinkedList of Strings 
        LinkedList<String> myList = new LinkedList<String>(); 
  
        // Adding nodes in LinkedList 
        myList.AddLast("Geeks"); 
        myList.AddLast("for"); 
        myList.AddLast("Data Structures"); 
        myList.AddLast("Noida"); 
  
        // To check if LinkedList is empty or not 
        if (myList.Count > 0) 
            Console.WriteLine("LinkedList is not empty"); 
        else
            Console.WriteLine("LinkedList is empty"); 
    } 
} 

输出:

LinkedList is not empty

Properties

属性 说明
Count 获取 LinkedList 中实际包含的节点数。
First 获取 LinkedList 的第一个节点。
Last 获取 LinkedList 的最后一个节点。

例子:


// C# code to illustrate the 
// LinkedList<T> class properties 
using System; 
using System.Collections; 
using System.Collections.Generic; 
  
class GFG { 
  
    // Driver code 
    public static void Main() 
    { 
  
        // Creating a LinkedList of Strings 
        LinkedList<String> myList = new LinkedList<String>(); 
  
        // Adding nodes in LinkedList 
        myList.AddLast("GeeksforGeeks"); 
        myList.AddLast("GFG"); 
        myList.AddLast("Data Structures"); 
        myList.AddLast("Noida"); 
  
        // ------- Count Property ------- 
          
        // To get the first node of the LinkedList 
        if (myList.Count > 0) 
            Console.WriteLine(myList.First.Value); 
        else
            Console.WriteLine("LinkedList is empty"); 
              
        // ------- Last Property ------- 
          
        // To get the last node of the LinkedList 
        if (myList.Count > 0) 
            Console.WriteLine(myList.Last.Value); 
        else
            Console.WriteLine("LinkedList is empty");     
              
    } 
} 

输出:

GeeksforGeeks
Noida

Methods

方法 说明
AddAfter 在 LinkedList 中的现有节点之后添加新节点或值。
AddBefore 在 LinkedList 中的现有节点之前添加新节点或值。
AddFirst 在 LinkedList 的开头添加新节点或值。
AddLast 在 LinkedList 的末尾添加新节点或值。
Clear() 从 LinkedList 中删除所有节点。
Contains(T) 确定某个值是否在 LinkedList 中。
复制到 (T[], Int32) 从目标数组的指定索引开始,将整个 LinkedList 复制到兼容的一维数组。
Equals(Object) 确定指定对象是否等于当前对象。
Find(T) 查找包含指定值的第一个节点。
FindLast(T) 查找包含指定值的最后一个节点。
GetEnumerator() 返回一个遍历 LinkedList 的枚举器。
GetHashCode() 用作默认的哈希函数。
GetObjectData(SerializationInfo, StreamingContext) 实现 ISerialized 接口并返回序列化 LinkedList 实例所需的数据。
GetType() 获取当前实例的类型。
MemberwiseClone() 创建当前对象的浅拷贝。
OnDeserialization(Object) 实现 ISerialized 接口并在反序列化完成时引发反序列化事件。
Remove(LinkedListNode) 从 LinkedList 中删除指定的节点。
Remove(T) 从 LinkedList 中删除第一次出现的指定值。
RemoveFirst() 删除 LinkedList 开头的节点。
RemoveLast() 删除 LinkedList 末尾的节点。
ToString() 返回表示当前对象的字符串。

例子:


// C# code to check if a 
// value is in LinkedList 
using System; 
using System.Collections; 
using System.Collections.Generic; 
  
class GFG { 
  
    // Driver code 
    public static void Main() 
    { 
        // Creating a LinkedList of Strings 
        LinkedList<String> myList = new LinkedList<String>(); 
  
        // Adding nodes in LinkedList 
        myList.AddLast("A"); 
        myList.AddLast("B"); 
        myList.AddLast("C"); 
        myList.AddLast("D"); 
        myList.AddLast("E"); 
  
        // To check if a value is in LinkedList 
        Console.WriteLine(myList.Contains("B")); 
    } 
} 

输出:

True

例子:


// C# code to remove the specified 
// node from the LinkedList 
using System; 
using System.Collections; 
using System.Collections.Generic; 
  
class GFG { 
  
    // Driver code 
    public static void Main() 
    { 
  
        // Creating a LinkedList of Integers 
        LinkedList<int> myList = new LinkedList<int>(); 
  
        // Adding nodes in LinkedList 
        myList.AddLast(2); 
        myList.AddLast(4); 
        myList.AddLast(6); 
        myList.AddLast(8); 
  
        // To get the count of nodes in LinkedList 
        // before removing all the nodes 
        Console.WriteLine("Total nodes in myList are : " + myList.Count); 
  
        // Displaying the nodes in LinkedList 
        foreach(int i in myList) 
        { 
            Console.WriteLine(i); 
        } 
  
        // Removing the first node from the LinkedList 
        myList.Remove(myList.First); 
  
        // To get the count of nodes in LinkedList 
        // after removing all the nodes 
        Console.WriteLine("Total nodes in myList are : " + myList.Count); 
  
        // Displaying the nodes in LinkedList 
        foreach(int i in myList) 
        { 
            Console.WriteLine(i); 
        } 
    } 
} 

输出:

Total nodes in myList are : 4
2
4
6
8
Total nodes in myList are : 3
4
6
8

参考:



相关用法


注:本文由纯净天空筛选整理自Sahil_Bansall大神的英文原创作品 C# | LinkedList Class。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。