Exemplo n.º 1
0
        public void CanMergeLinkedListSecondListLonger()
        {
            Node LL1Node1 = new Node("LL1Node1");
            Node LL1Node2 = new Node("LL1Node2");
            Node LL1Node3 = new Node("LL1Node3");
            Node LL1Node4 = new Node("LL1Node4");
            Node LL1Node5 = new Node("LL1Node5");

            Node LL2Node1 = new Node("LL2Node1");
            Node LL2Node2 = new Node("LL2Node2");
            Node LL2Node3 = new Node("LL2Node3");
            Node LL2Node4 = new Node("LL2Node4");
            Node LL2Node5 = new Node("LL2Node5");
            Node LL2Node6 = new Node("LL2Node6");

            LL LL1 = new LL(LL1Node1);
            LL LL2 = new LL(LL2Node1);

            LL1.Append(LL1Node2);
            LL1.Append(LL1Node3);
            LL1.Append(LL1Node4);
            LL1.Append(LL1Node5);

            LL2.Append(LL2Node2);
            LL2.Append(LL2Node3);
            LL2.Append(LL2Node4);
            LL2.Append(LL2Node5);
            LL2.Append(LL2Node6);

            LLMerge(LL1, LL2);

            Assert.NotEqual(LL1Node3, LL1Node2.Next);
        }
Exemplo n.º 2
0
        public void LLCanAddBefore(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.AddBefore(node4, node3);

            Assert.Equal(node3, node4.Next);
        }
Exemplo n.º 3
0
        public void LLCanFind(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.Append(node4);

            Assert.Equal(value, LL.Find(value).Value);
        }
Exemplo n.º 4
0
        public void LLCanAppend(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.Append(node4);

            Assert.Null(node4.Next);
        }
        public void NotAPalindromeTest()
        {
            Node node1 = new Node("S");
            Node node2 = new Node("H");
            Node node3 = new Node("A");
            Node node4 = new Node("I");
            Node node5 = new Node("H");
            Node node6 = new Node("U");
            Node node7 = new Node("L");
            Node node8 = new Node("U");
            Node node9 = new Node("D");

            LL LL1 = new LL(node1);

            LL1.Append(node2);
            LL1.Append(node3);
            LL1.Append(node4);
            LL1.Append(node5);
            LL1.Append(node6);
            LL1.Append(node7);
            LL1.Append(node8);
            LL1.Append(node9);

            Assert.False(PalindromeChecker(LL1));
        }
Exemplo n.º 6
0
        public void CanReverseEvenLinkedList()
        {
            Node node1 = new Node("node1");
            Node node2 = new Node("node2");
            Node node3 = new Node("node3");
            Node node4 = new Node("node4");

            LL LL1 = new LL(node1);

            LL1.Append(node2);
            LL1.Append(node3);
            LL1.Append(node4);

            LL LL2 = ReverseLL(LL1);

            Assert.Equal(LL1.Head.Value, LL2.Head.Value);
        }
Exemplo n.º 7
0
        public void CanFindValueAtHead()
        {
            Node node1 = new Node("node1");
            Node node2 = new Node("node2");
            Node node3 = new Node("node3");
            Node node4 = new Node("node4");
            Node node5 = new Node("node5");

            LL ll = new LL(node1);

            ll.Append(node2);
            ll.Append(node3);
            ll.Append(node4);
            ll.Append(node5);

            Assert.Equal("node1", NodeFinderAtK(5, ll));
        }
Exemplo n.º 8
0
        public void CanThrowException()
        {
            Node node1 = new Node("node1");
            Node node2 = new Node("node2");
            Node node3 = new Node("node3");
            Node node4 = new Node("node4");
            Node node5 = new Node("node5");

            LL ll = new LL(node1);

            ll.Append(node2);
            ll.Append(node3);
            ll.Append(node4);
            ll.Append(node5);

            Assert.Equal("Value is outside Linked List", NodeFinderAtK(10, ll));
        }
        public void EvenLetterPalindromeTest()
        {
            Node node1 = new Node("H");
            Node node2 = new Node("A");
            Node node3 = new Node("N");
            Node node4 = new Node("N");
            Node node5 = new Node("A");
            Node node6 = new Node("H");

            LL LL1 = new LL(node1);

            LL1.Append(node2);
            LL1.Append(node3);
            LL1.Append(node4);
            LL1.Append(node5);
            LL1.Append(node6);

            Assert.True(PalindromeChecker(LL1));
        }
        public static void Main(string[] args)
        {
            Node LL1Node1 = new Node("LL1Node1");
            Node LL1Node2 = new Node("LL1Node2");
            Node LL1Node3 = new Node("LL1Node3");
            Node LL1Node4 = new Node("LL1Node4");
            Node LL1Node5 = new Node("LL1Node5");
            Node LL1Node6 = new Node("LL1Node6");

            LL LL1 = new LL(LL1Node1);

            LL1.Append(LL1Node2);
            LL1.Append(LL1Node3);
            LL1.Append(LL1Node4);
            LL1.Append(LL1Node5);
            LL1.Append(LL1Node6);

            Node LL2Node1 = new Node("LL2Node1");
            Node LL2Node2 = new Node("LL2Node2");
            Node LL2Node3 = new Node("LL2Node3");
            Node LL2Node4 = new Node("LL2Node4");
            Node LL2Node5 = new Node("LL2Node5");

            LL LL2 = new LL(LL2Node1);

            LL2.Append(LL2Node2);
            LL2.Append(LL2Node3);
            LL2.Append(LL2Node4);
            LL2.Append(LL2Node5);

            LL1.Print();

            Console.WriteLine("");

            LL2.Print();

            LLMerge(LL1, LL2);

            Console.WriteLine("");

            LL1.Print();
        }
Exemplo n.º 11
0
        public static void Main(string[] args)
        {
            Node node1 = new Node("node1");
            Node node2 = new Node("node2");
            Node node3 = new Node("node3");
            Node node4 = new Node("node4");
            Node node5 = new Node("node5");

            LL LL1 = new LL(node1);

            LL1.Append(node2);
            LL1.Append(node3);
            LL1.Append(node4);
            LL1.Append(node5);

            LL1.Print();

            Console.WriteLine("");

            ReverseLL(LL1);

            LL1.Print();
        }
        public static void Main(string[] args)
        {
            Node node1 = new Node("R");
            Node node2 = new Node("A");
            Node node3 = new Node("C");
            Node node4 = new Node("E");
            Node node5 = new Node("C");
            Node node6 = new Node("A");
            Node node7 = new Node("R");

            LL LL1 = new LL(node1);

            LL1.Append(node2);
            LL1.Append(node3);
            LL1.Append(node4);
            LL1.Append(node5);
            LL1.Append(node6);
            LL1.Append(node7);

            Node node8  = new Node("H");
            Node node9  = new Node("A");
            Node node10 = new Node("N");
            Node node11 = new Node("N");
            Node node12 = new Node("A");
            Node node13 = new Node("H");

            LL LL2 = new LL(node8);

            LL2.Append(node9);
            LL2.Append(node10);
            LL2.Append(node11);
            LL2.Append(node12);
            LL2.Append(node13);

            Console.WriteLine(PalindromeChecker(LL1));
            Console.WriteLine(PalindromeChecker(LL2));
        }
        /// <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);
        }