LinkedList
LinkedList<T> is a generic doubly linked list.
Doubly linked list is a chain of nodes in which each references the node before, the node after and the actual element.
Benefit – element can always be inserted efficiently anywhere in the list, since it just involves creating a new node and updating a few references.
Implements IEnumerable<T> and ICollection<T>.
LinkedList<T> supports copying to an array for indexed processing and obtaining an enumerator to support foreach statement.
public sealed class LinkedListNode{ public LinkedList List { get; } public LinkedListNode Next { get; } public LinkedListNode Previous { get; } public T Value { get; set; } }
var tune = new LinkedList(); tune.AddFirst ("do"); tune.Dump(); // do tune.AddLast ("so"); tune.Dump(); // do - so tune.AddAfter (tune.First, "re"); tune.Dump(); // do - re- so tune.AddAfter (tune.First.Next, "mi"); tune.Dump(); // do - re - mi- so tune.AddBefore (tune.Last, "fa"); tune.Dump(); // do - re - mi - fa- so tune.RemoveFirst(); tune.Dump(); // re - mi - fa - so tune.RemoveLast(); tune.Dump(); // re - mi - fa LinkedListNode miNode = tune.Find ("mi"); tune.Remove (miNode); tune.Dump(); // re - fa tune.AddFirst (miNode); tune.Dump(); // mi- re - fa