public void FindNthToLastElement_Int_Test() { var head = new AlgorithmsPractice.Lists.LinkedListNode <int>(1, 2, 3, 4, 5, 6, 7); var nthToLast = LinkedListService.FindNthToLastElement <int>(head, 3); Assert.AreEqual(5, nthToLast.Value); }
public void GetLoopStart_NonCircular_Test() { var head = new AlgorithmsPractice.Lists.LinkedListNode <int>(3); var result = LinkedListService.GetLoopStart(head); Assert.Null(result); }
public void AddNodes_DiffrentLength_Test() { var firstNumber = new AlgorithmsPractice.Lists.LinkedListNode <int>(3, 1, 5); var secondNumber = new AlgorithmsPractice.Lists.LinkedListNode <int>(5, 9, 2, 7); var result = LinkedListService.AddNodes(firstNumber, secondNumber, 0); AreEqual(new AlgorithmsPractice.Lists.LinkedListNode <int>(5, 2, 4, 2, 1), result); }
public void DeletNode_IntNull_Test() { var head = new AlgorithmsPractice.Lists.LinkedListNode <int>(1); var next = new AlgorithmsPractice.Lists.LinkedListNode <int>(2); head.Next = next; var result = LinkedListService.DeleteNode <int>(next); Assert.AreEqual(false, result); }
public void DeleteNode_IntMiddle_Test() { var head = new AlgorithmsPractice.Lists.LinkedListNode <int>(1); var middle = new AlgorithmsPractice.Lists.LinkedListNode <int>(2); var last = new AlgorithmsPractice.Lists.LinkedListNode <int>(3); head.Next = middle; middle.Next = last; var result = LinkedListService.DeleteNode <int>(middle); Assert.AreEqual(true, result); Assert.AreEqual(head.Next, middle); Assert.AreEqual(3, head.Next.Value); Assert.IsNull(middle.Next); }
private bool AreEqual <T>(AlgorithmsPractice.Lists.LinkedListNode <T> firstList, AlgorithmsPractice.Lists.LinkedListNode <T> secondList) where T : IEquatable <T> { while (firstList != null && secondList != null) { if (!firstList.Value.Equals(secondList.Value)) { return(false); } firstList = firstList.Next; secondList = secondList.Next; } if (firstList != null || secondList != null) { return(false); } return(true); }
public void GetLoopStart_Circular_Test() { var head = new AlgorithmsPractice.Lists.LinkedListNode <int>(3); var circularList = head; circularList.Next = new AlgorithmsPractice.Lists.LinkedListNode <int>(3); circularList = circularList.Next; var loopStart = new AlgorithmsPractice.Lists.LinkedListNode <int>(3); circularList.Next = loopStart; circularList = circularList.Next; circularList.Next = new AlgorithmsPractice.Lists.LinkedListNode <int>(3); circularList = circularList.Next; circularList.Next = loopStart; var result = LinkedListService.GetLoopStart(head); Assert.AreEqual(loopStart, result); }
public void RemoveDuplicatesTwoPointers_Int_Test() { var values = new[] { 1, 2, 1, 4, 5, 5 }; var head = new AlgorithmsPractice.Lists.LinkedListNode <int>(values); LinkedListService.RemoveDuplicatesTwoPointers(head); var newValues = new List <int>(); while (head != null) { newValues.Add(head.Value); head = head.Next; } Assert.AreEqual(newValues.Distinct().ToList().Count, newValues.Count); Assert.AreEqual(newValues.Count, values.Distinct().ToList().Count); foreach (var value in newValues) { values.Contains(value); } }