///Need to fix the logic of finding the start point of loop in linkedList with out using extra space. using runner technique
        public void FindLoopStartPoint_Positive_Test()
        {
            DSLinkedList <int> lnkLst = new DSLinkedList <int>();

            lnkLst.Add(-1);
            lnkLst.Add(-7);
            lnkLst.Add(7);
            lnkLst.Add(-4);
            lnkLst.Add(19);
            lnkLst.Add(6);
            lnkLst.Add(-9);
            lnkLst.Add(-5);
            lnkLst.Add(2);
            lnkLst.Add(-5);

            lnkLst._current.Next = lnkLst._head.Next.Next.Next.Next.Next.Next;

            DSNode <int> expected = lnkLst._head.Next.Next.Next.Next.Next.Next;

            IntDSNodeEqualityComparer intDSNodeEqualityComparer = new IntDSNodeEqualityComparer();

            DSNode <int> actual = lnkLst.FindLoopStartPoint();

            Assert.IsNotNull(actual);

            Assert.AreEqual(expected, actual);
        }
Пример #2
0
        private void Iterator(DSTreeNode <int> root, int level, List <DSLinkedList <int> > _node)
        {
            if (root == null)
            {
                return;
            }

            if (_node.Count == level)
            {
                var list = new DSLinkedList <int>();
                list.Add(root.Data);
                _node.Add(list);
            }
            else
            {
                _node[level].Add(root.Data);
            }

            if (root.Left != null)
            {
                Iterator(root.Left, level + 1, _node);
            }

            if (root.Right != null)
            {
                Iterator(root.Right, level + 1, _node);
            }
        }
Пример #3
0
        public void Add_Detect_Loop_IN_Flyod_Algo_LinkedList()
        {
            DSLinkedList <int> lnkLst = new DSLinkedList <int>();

            lnkLst.Add(-1);
            lnkLst.Add(-7);
            lnkLst.Add(7);
            lnkLst.Add(-4);
            lnkLst.Add(19);
            lnkLst.Add(6);
            lnkLst.Add(-9);
            lnkLst.Add(-5);
            lnkLst.Add(2);
            lnkLst.Add(-5);

            lnkLst._head.Next.Next.Next.Next.Next.Next = lnkLst._head;

            bool expected = true;

            IntDSNodeEqualityComparer intDSNodeEqualityComparer = new IntDSNodeEqualityComparer();

            bool actual = lnkLst.FloydLoopDetect(intDSNodeEqualityComparer);

            Assert.AreEqual(expected, actual);
        }
Пример #4
0
        public void Add_Test_Positive_CountCheck()
        {
            DSLinkedList <int> actual = new DSLinkedList <int>();

            actual.Add(5);
            actual.Add(10);
            actual.Add(15);
            actual.Add(20);

            Assert.AreEqual(4, actual.Count);
        }
Пример #5
0
        public void Iterator_Test()
        {
            DSTreeNode <int> dSTreeNode = new DSTreeNode <int>(1);

            dSTreeNode.Left = new DSTreeNode <int>(2)
            {
                Right = new DSTreeNode <int>(5),
                Left  = new DSTreeNode <int>(4)
            };

            dSTreeNode.Right = new DSTreeNode <int>(3)
            {
                Right = new DSTreeNode <int>(7),
                Left  = new DSTreeNode <int>(6)
            };

            ListOfDepth obj      = new ListOfDepth();
            var         actual   = obj.levelOrder(dSTreeNode);
            var         expected = new DSLinkedList <int> [3];

            expected[0] = new DSLinkedList <int>();
            expected[0].Add(1);

            expected[1] = new DSLinkedList <int>();
            expected[1].Add(2);
            expected[1].Add(3);

            expected[2] = new DSLinkedList <int>();
            expected[2].Add(4);
            expected[2].Add(5);
            expected[2].Add(6);
            expected[2].Add(7);

            Assert.IsNotNull(actual);
            Assert.AreEqual(actual.Length, expected.Length);

            for (int i = 0; i < actual.Length; i++)
            {
                var actualData   = actual[i]._head;
                var expectedData = expected[i]._head;

                Assert.AreEqual(actual[i].Count, expected[i].Count);

                while (actualData != null)
                {
                    Assert.AreEqual(actualData.Data, expectedData.Data);

                    actualData   = actualData.Next;
                    expectedData = expectedData.Next;
                }
            }
        }
Пример #6
0
        public void Find_Middle_By_FlyodAlgo()
        {
            DSLinkedList <int> lnkLst = new DSLinkedList <int>();

            for (int i = 1; i <= 10; i++)
            {
                lnkLst.Add(i * 5);
            }

            int expected = 30;

            int actual = lnkLst.FindMiddle();

            Assert.AreEqual(expected, actual);
        }
Пример #7
0
        public void Count_Number_Of_Times_Element_Repeated()
        {
            DSLinkedList <int> lnkLst = new DSLinkedList <int>();

            for (int i = 1; i <= 10; i++)
            {
                lnkLst.Add(i * 5);
            }

            lnkLst.Add(5);

            int expected = 2;
            IntDSNodeEqualityComparer comparer = new IntDSNodeEqualityComparer();
            int actual = lnkLst.CountOfRepetationOfElement(5, comparer);

            Assert.AreEqual(expected, actual);
        }
Пример #8
0
        public void Add_Detect_Loop_IN_LinkedList()
        {
            DSLinkedList <int> lnkLst = new DSLinkedList <int>();

            for (int i = 1; i <= 10; i++)
            {
                lnkLst.Add(i * 5);
            }

            lnkLst._head.Next.Next.Next.Next.Next = lnkLst._head;

            bool expected = true;

            bool actual = lnkLst.DetectLoop();

            Assert.AreEqual(expected, actual);
        }
Пример #9
0
        public void Add_Reverse_LinkedList()
        {
            DSLinkedList <int> lnkLst = new DSLinkedList <int>();

            lnkLst.Add(5);
            lnkLst.Add(10);
            lnkLst.Add(15);
            lnkLst.Add(20);

            lnkLst.Add(25);
            lnkLst.Delete(4);
            int expected = lnkLst.ValueAtIndex(0);

            lnkLst.Reverse();
            int actual = lnkLst.ValueAtIndex(3);

            Assert.AreEqual(expected, actual);
        }
Пример #10
0
        public void Add_Test_Positive_Data_Validation()
        {
            DSLinkedList <int> lnkLst = new DSLinkedList <int>();

            lnkLst.Add(5);
            lnkLst.Add(10);
            lnkLst.Add(15);
            lnkLst.Add(20);

            int actual2ndIndex = lnkLst.ValueAtIndex(2);

            lnkLst.Add(25);

            int actualAt4thIndex = lnkLst.ValueAtIndex(4);

            Assert.AreEqual(15, actual2ndIndex);

            Assert.AreEqual(25, actualAt4thIndex);
        }
Пример #11
0
        public void Add_Test_Delete_BY_INDEX_Positive_Data_Validation()
        {
            DSLinkedList <int> lnkLst = new DSLinkedList <int>();

            lnkLst.Add(5);
            lnkLst.Add(10);
            lnkLst.Add(15);
            lnkLst.Add(20);
            lnkLst.Delete(1);

            int actual2ndIndex = lnkLst.ValueAtIndex(2);

            lnkLst.Add(25);

            int actualAt3rdIndex = lnkLst.ValueAtIndex(3);

            Assert.AreEqual(20, actual2ndIndex);

            Assert.AreEqual(25, actualAt3rdIndex);
        }
Пример #12
0
        public void Add_Test_Delete_Positive_Data_Validation()
        {
            DSLinkedList <int> lnkLst = new DSLinkedList <int>();

            IntDSNodeEqualityComparer intDSNodeEqualityComparer = new IntDSNodeEqualityComparer();

            lnkLst.Add(5);
            lnkLst.Add(10);
            lnkLst.Add(15);
            lnkLst.Add(20);
            lnkLst.Delete(10, intDSNodeEqualityComparer);

            int actual2ndIndex = lnkLst.ValueAtIndex(2);

            lnkLst.Add(25);

            int actualAt3rdIndex = lnkLst.ValueAtIndex(3);

            Assert.AreEqual(20, actual2ndIndex);

            Assert.AreEqual(25, actualAt3rdIndex);
        }