/// <summary> /// Merges two linked lists /// </summary> /// <param name="LL1">A linked list</param> /// <param name="LL2">A linked list</param> /// <returns>Returns a merged linked list</returns> public static LL LLMerge(LL LL1, LL LL2) { LL1.Current = LL1.Head; LL2.Current = LL2.Head; Node temp = LL2.Current.Next; while (LL1.Current.Next.Next != null) { LL1.AddAfter(LL2.Head, LL1.Current); LL2.Head = temp; LL2.Current = LL2.Head; temp = LL2.Current.Next; LL1.Current = LL1.Current.Next.Next; } LL1.AddAfter(LL2.Head, LL1.Current); LL2.Head = temp; LL1.Append(LL2.Head); LL2.Head = null; return(LL1); }
public void LLCanAddAfter(object value) { Node node1 = new Node(10); Node node2 = new Node(null); Node node3 = new Node("Dune"); Node node4 = new Node(value); LL LL = new LL(node1); LL.Append(node2); LL.Append(node3); LL.AddAfter(node4, node2); Assert.Equal(node4, node2.Next); }