The LinkedList<T>
generic class in the System.Collections.Generic
namespace provides the AddAfter()
method.
We can use AddAfter()
in C# to add a node in a linked list after another specified node.
public LinkedListNode<T> AddAfter (LinkedListNode<T> node, T value);
AddAfter()
takes a linked list node and the value T
as input, and returns a new LinkedListNode<T>
containing the passed input value that is inserted after the passed input node.
It also has an overload available that takes LinkedListNode<T>
as input instead of the value T
.
This method is an O(1) operation.
LinkedList<T>
accepts null
as a valid, reference type value.
LinkedList<T>
allows duplicate values as well.
It throws an exception if the specified node is null
.
It throws an exception if the specified node is in a different linked list.
In the following code example, we created a linked list of strings, monthList
, and added the names of few months to it. The linked list contains three strings: January
, March
, and May
.
using System;using System.Collections.Generic;class LinkedListAddAfter{static void Main(){LinkedList<string> monthList = new LinkedList<string>();LinkedListNode<string> janNode= monthList.AddLast("January");LinkedListNode<string> marchNode = monthList.AddLast("March");monthList.AddLast("May");Console.WriteLine("LinkedList Elements");Print(monthList);monthList.AddAfter(janNode, "February");Console.WriteLine($"LinkedList Elements After AddAfter({janNode.Value},'Feburary')");Print(monthList);monthList.AddAfter(marchNode, "April");Console.WriteLine($"LinkedList Elements After AddAfter({marchNode.Value},'April')");Print(monthList);}private static void Print(LinkedList<string> list){foreach (var node in list){Console.Write(node + ", ");}Console.WriteLine("\n");}}
We have saved references of the linked list node, with values January
and March
to be used later as an input parameter to the AddAfter()
method.
We created Print()
, a helper method to display the linked list nodes.
Now, we call the AddAfter()
method while passing the linked list node for January
, and string February
as the new node value on this linked list.
This adds a new node with the value February
after the January
node on the list. We can see that January and February are next to each other in the output.
We again call the AddAfter()
method, pass the linked list node for March
, and string April
as the new node value on this linked list.
This adds a new node with the value April
after the March
node in the list.
The program prints the output and exits shown below.
LinkedList Elements
January, March, May,
LinkedList Elements After AddAfter(January, 'February')
January, February, March, May,
LinkedList Elements After AddAfter(March,'April')
January, February, March, April, May,
Please note that the
LinkedList<T>
class is maintained internally as a doubly-linked list andAddAfter()
is an O(1) operation.