/// <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);
        }
Exemplo n.º 2
0
        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);
        }