當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。