using System; using System.Collections.Generic; public class Example { public static void Main() { string[] a = {"1", "2", "3", "4", "3", "2" }; LinkedList l = new LinkedList(a); Display(l, "Початковий стан: "); Console.Write("\nl.Contains(\"3\") = {0}",l.Contains("3")); Console.Write("\nl.Contains(\"9\") = {0}",l.Contains("9")); l.AddFirst("x"); Display(l, "\nДодано 'x' на початок: "); LinkedListNode n = l.First; l.RemoveFirst(); l.AddLast(n); Display(l, "\nПочатковий вузол пересунуто на кінець списку:"); l.RemoveLast(); l.AddLast("у"); Display(l, "\nЗмінено останній вузол на 'у': "); n = l.Last; l.RemoveLast(); l.AddFirst(n); Display(l, "\nОстанній вузол переміщено на початок: "); l.RemoveFirst(); n = l.FindLast("3"); IndicateNode(n, "\nПоточний вузол останнього входження '3':"); l.AddAfter(n, "у"); l.AddAfter(n, "z"); IndicateNode(n, "Додано 'z' і 'y' після поточного вузла: "); n = l.Find("4"); IndicateNode(n, "Поточний вузол зі значенням '4': "); l.AddBefore(n, "u"); l.AddBefore(n, "v"); IndicateNode(n, "Додано 'u' і 'v' перед '4': "); LinkedListNode m = n.Previous; n = l.Find("z"); IndicateNode(n, "Поточний вузол зі значенням 'z': "); Console.WriteLine("Виключення при спробі додати наявний у списку вузол:"); try {l.AddBefore(n, m);} catch (InvalidOperationException ex) {Console.WriteLine("Увага: "+ex.Message);} l.Remove(m); l.AddBefore(n, m); IndicateNode(n, "Видалений вузол вставлено перед наявним:"); l.Remove(n); IndicateNode(n, "Спроба виявити вилучений поточний вузол:"); l.Remove("2"); Display(l, "Вилучено вузол зі значенням '2':"); Console.Write("\nКопіювання у масив: "); string[] ar = new string[l.Count]; l.CopyTo(ar, 0); foreach (string s in ar) Console.Write(" "+s); l.Clear(); Console.WriteLine("\nОчищений список містить '1'? {0}",l.Contains("1")); } private static void Display (LinkedList l, string t) { Console.Write(t); foreach (string s in l) Console.Write(" " + s); } private static void IndicateNode (LinkedListNode node, string t) { Console.Write(t); if (node.List == null) { Console.WriteLine(" вузла '{0}' немає у списку.", node.Value); return; } // Виділення круглими дужками значення виявленого вузла string r = " (" + node.Value + ")"; LinkedListNode nodeP = node.Previous; // Долучення до результату поперередніх вузлів while (nodeP != null) { r = " " + nodeP.Value + r; nodeP = nodeP.Previous; } // Долучення до результату наступних вузлів node = node.Next; while (node != null) { r = r + " " + node.Value; node = node.Next; } Console.WriteLine(result); } }