C# | LinkedList Class
LinkedList<T> Class is present in System.Collections.Generic namespace. This generic type allows fast inserting and removing of elements. It implements a classic linked list. Each object is separately allocated. In the LinkedList, certain operations do not require the whole collection to be copied. But in many common cases LinkedList hinders performance.
Characteristics of LinkedList Class:
- LinkedList<T> is a general-purpose linked list. It supports enumerators.
- Insertion and removal are O(1) operations.
- You can remove nodes and reinsert them, either in the same list or in another list, which results in no additional objects allocated on the heap.
- Because the list also maintains an internal count, getting the Count property is an O(1) operation.
- Each node in a LinkedList<T> object is of the type LinkedListNode<T>.
- The LinkedList class does not support chaining, splitting, cycles, or other features that can leave the list in an inconsistent state.
- If the LinkedList is empty, the First and Last properties contain null.
- The LinkedList is doubly linked, therefore, each node points forward to the Next node and backward to the Previous node.
Constructors
Constructor | Description |
---|---|
LinkedList() | Initializes a new instance of the LinkedList class that is empty. |
LinkedList(IEnumerable) | Initializes a new instance of the LinkedList class that contains elements copied from the specified IEnumerable and has sufficient capacity to accommodate the number of elements copied. |
LinkedList(SerializationInfo, StreamingContext) | Initializes a new instance of the LinkedList class that is serializable with the specified SerializationInfo and StreamingContext. |
Example:
// 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" ); } } |
Output:
LinkedList is not empty
Properties
Property | Description |
---|---|
Count | Gets the number of nodes actually contained in the LinkedList. |
First | Gets the first node of the LinkedList. |
Last | Gets the last node of the LinkedList. |
Example:
// 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" ); } } |
Output:
GeeksforGeeks Noida
Methods
Method | Description |
---|---|
AddAfter | Adds a new node or value after an existing node in the LinkedList. |
AddBefore | Adds a new node or value before an existing node in the LinkedList. |
AddFirst | Adds a new node or value at the start of the LinkedList. |
AddLast | Adds a new node or value at the end of the LinkedList. |
Clear() | Removes all nodes from the LinkedList. |
Contains(T) | Determines whether a value is in the LinkedList. |
CopyTo(T[], Int32) | Copies the entire LinkedList to a compatible one-dimensional Array, starting at the specified index of the target array. |
Equals(Object) | Determines whether the specified object is equal to the current object. |
Find(T) | Finds the first node that contains the specified value. |
FindLast(T) | Finds the last node that contains the specified value. |
GetEnumerator() | Returns an enumerator that iterates through the LinkedList. |
GetHashCode() | Serves as the default hash function. |
GetObjectData(SerializationInfo, StreamingContext) | Implements the ISerializable interface and returns the data needed to serialize the LinkedList instance. |
GetType() | Gets the Type of the current instance. |
MemberwiseClone() | Creates a shallow copy of the current Object. |
OnDeserialization(Object) | Implements the ISerializable interface and raises the deserialization event when the deserialization is complete. |
Remove(LinkedListNode) | Removes the specified node from the LinkedList. |
Remove(T) | Removes the first occurrence of the specified value from the LinkedList. |
RemoveFirst() | Removes the node at the start of the LinkedList. |
RemoveLast() | Removes the node at the end of the LinkedList. |
ToString() | Returns a string that represents the current object. |
Example:
// 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" )); } } |
Output:
True
Example:
// 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); } } } |
Output:
Total nodes in myList are : 4 2 4 6 8 Total nodes in myList are : 3 4 6 8
Reference:
Please Login to comment...