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
參考:
相關用法
- C# Linq Aggregate()用法及代碼示例
- C# Linq Concat()用法及代碼示例
- C# Linq Distinct()用法及代碼示例
- C# Linq Intersect()用法及代碼示例
- C# Linq Reverse()用法及代碼示例
- C# Linq ThenBy()用法及代碼示例
- C# Linq ThenByDescending()用法及代碼示例
- C# Linq Union()用法及代碼示例
- C# List.TrimExcess用法及代碼示例
- C# List.FindIndex()用法及代碼示例
- C# List BinarySearch()用法及代碼示例
- C# List FindLastIndex()方法用法及代碼示例
- C# List FindLastIndex()函數用法及代碼示例
- C# ListBox用法及代碼示例
- C# ListDictionary用法及代碼示例
- C# List用法及代碼示例
- C# List和Set的區別用法及代碼示例
- C# String Clone()用法及代碼示例
- C# String Compare()用法及代碼示例
- C# String CompareOrdinal()用法及代碼示例
- C# String CompareTo()用法及代碼示例
- C# String Concat()用法及代碼示例
- C# String Contains()用法及代碼示例
- C# String Copy()用法及代碼示例
- C# String CopyTo()用法及代碼示例
注:本文由純淨天空篩選整理自Sahil_Bansall大神的英文原創作品 C# | LinkedList Class。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。