using System; using System.Collections.Generic; class LinkedListNodeDemo{ public static void Main(){ LinkedList lst = new LinkedList( new int[]{5, 3, 2, 7, -4, 0}); ReportList("Initial LinkedList", lst); LinkedListNode node1, node2, node; node1 = lst.First; node2 = lst.Last; // Run-time error. // The LinkedListNode is already in the list. // Error message: The LinkedList node belongs a LinkedList. /* lst.AddLast(node1); */ // Move first node to last node in list lst.Remove(node1); lst.AddLast(node1); ReportList("node1 = lst.First; lst.Remove(node1); lst.AddLast(node1);", lst); // Navigate in list via LinkedListNode objects node1 = lst.First; Console.WriteLine("Third element in list: node1 = lst.First; node1.Next.Next.Value == {0}\n", node1.Next.Next.Value); // Add an integer after a LinkedListNode object lst.AddAfter(node1, 17); ReportList("lst.AddAfter(node1, 17);", lst); // Add a LinkedListNode object after another LinkedListNode object lst.AddAfter(node1, new LinkedListNode(18)); ReportList("lst.AddAfter(node1, new LinkedListNode(18));" , lst); // Navigate in LinkedListNode objects and add an int before a node: node = node1.Next.Next.Next; lst.AddBefore(node, 99); ReportList("node = node1.Next.Next.Next; lst.AddBefore(node, 99); " , lst); // Navigate in LinkedListNode objects and remove a node. node = node.Previous; lst.Remove(node); ReportList("node = node.Previous; lst.Remove(node);" , lst); } public static void ReportList(string explanation, LinkedList list){ Console.WriteLine(explanation); foreach(T el in list) Console.Write("{0, 4}", el); Console.WriteLine(); Console.WriteLine(); } }