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:



filter_none

edit
close

play_arrow

link
brightness_4
code

// 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");
    }
}

chevron_right


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:

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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");    
              
    }
}

chevron_right


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:

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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"));
    }
}

chevron_right


Output:

True

Example:

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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);
        }
    }
}

chevron_right


Output:

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

Reference:



My Personal Notes arrow_drop_up

In love with a semicolon because sometimes i miss it so badly)

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.