///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); }
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); } }
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); }
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); }
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; } } }
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); }
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); }
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); }
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); }
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); }
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); }
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); }