コード例 #1
0
        public void Test_DetectCycle2(int[] values, int expected)
        {
            ListNode node  = LinkedListHelper.CreateLinkedList(values);
            var      node1 = node.next.next;
            var      node2 = node.next.next.next.next;

            node2.next = node1;
            var actual = sut.DetectCycle(node);

            Assert.Equal(expected, actual.val);
        }
コード例 #2
0
        public void OddEvenList_TwoItemList_ReturnsListOddEven()
        {
            var sut        = new Solution();
            var helper     = new LinkedListHelper();
            var input_list = helper.CreateSinglyLinkedList(new int[] { 1, 2 });
            var expected   = helper.CreateSinglyLinkedList(new int[] { 1, 2 });

            var actual = sut.OddEvenList(input_list);

            AssertLinkedList.AreEqualValue(expected, actual);
        }
コード例 #3
0
        public void Test_Can_add_one_to_999999_to_make_a_million()
        {
            var helper   = new LinkedListHelper();
            var input1   = helper.CreateSinglyLinkedList(new int[] { 1 });
            var input2   = helper.CreateSinglyLinkedList(new int[] { 9, 9, 9, 9, 9, 9 });
            var expected = helper.CreateSinglyLinkedList(new int[] { 1, 0, 0, 0, 0, 0, 0 });
            var sut      = new Solution();

            var actual = sut.AddTwoNumbers(input1, input2);

            AssertLinkedList.AreEqualValue(expected, actual);
        }
コード例 #4
0
        public void Example3_Can_add_two_zeroes()
        {
            var helper   = new LinkedListHelper();
            var input1   = helper.CreateSinglyLinkedList(new int[] { 0 });
            var input2   = helper.CreateSinglyLinkedList(new int[] { 0 });
            var expected = helper.CreateSinglyLinkedList(new int[] { 0 });
            var sut      = new Solution();

            var actual = sut.AddTwoNumbers(input1, input2);

            AssertLinkedList.AreEqualValue(expected, actual);
        }
コード例 #5
0
        public void Example2_Can_add_two_numbers_of_same_length()
        {
            var helper   = new LinkedListHelper();
            var input1   = helper.CreateSinglyLinkedList(new int[] { 2, 4, 3 });
            var input2   = helper.CreateSinglyLinkedList(new int[] { 5, 6, 4 });
            var expected = helper.CreateSinglyLinkedList(new int[] { 8, 0, 7 });
            var sut      = new Solution();

            var actual = sut.AddTwoNumbers(input1, input2);

            AssertLinkedList.AreEqualValue(expected, actual);
        }
コード例 #6
0
        public void RemoveElement_ListWhereEveryItemNeedsRemoval_ReturnsNull()
        {
            var helper     = new LinkedListHelper();
            var sut        = new Solution();
            var input_head = helper.CreateSinglyLinkedList(new int[] { 7, 7, 7, 7 });
            var input_val  = 7;
            var expected   = helper.CreateSinglyLinkedList(new int[] { });

            var actual = sut.RemoveElements(input_head, input_val);

            AssertLinkedList.AreEqualValue(expected, actual);
        }
コード例 #7
0
        public void BasicTest()
        {
            LinkedListHelper <int> helper = new LinkedListHelper <int>();
            LinkedList <int>       input  = helper.CreateLinkedList(1, 2, 3, 4, 5);

            GetKthToLast getKth = new GetKthToLast();
            int          k      = getKth.GetKth_WithSizeInput(input, 2);

            int r = getKth.GetKth_WithOutSizeInput(input, 2);

            Assert.Equal(4, k);
            Assert.Equal(4, r);
        }
コード例 #8
0
        public void Get_can_return_at_index()
        {
            var head = new LinkedListHelper().CreateSinglyLinkedList(new int[] { 1, 2, 3, 4 });
            var sut  = new MySinglyLinkedList(head);

            var result1 = sut.Get(0);
            var result2 = sut.Get(2);
            var result3 = sut.Get(3);

            Assert.AreEqual(1, result1);
            Assert.AreEqual(3, result2);
            Assert.AreEqual(4, result3);
        }
コード例 #9
0
        public void ListHasSameLength()
        {
            LinkedListHelper <int> helper = new LinkedListHelper <int>();
            var input1 = helper.CreateLinkedList_Node(7, 1, 6);
            var input2 = helper.CreateLinkedList_Node(5, 9, 2);

            SumLists sum = new SumLists();

            var result = sum.SumList_reverse(input1, input2);

            string resultVal = helper.PrintLinkedList(result);

            Assert.Equal("2 1 9", resultVal);
        }
コード例 #10
0
        public void BasicTest()
        {
            LinkedListHelper <int> helper = new LinkedListHelper <int>();
            var inputHead = helper.CreateLinkedList_Node(0, 1, 2, 1, 0);

            Palindrome p      = new Palindrome();
            var        result = p.isPalindrome(inputHead);

            var inputHead2 = helper.CreateLinkedList_Node(0, 1, 2, 3, 4);
            var result2    = p.isPalindrome(inputHead2);

            Assert.True(result);
            Assert.False(result2);
        }
コード例 #11
0
        public void TestEx4_2(int[] input, int pivot, int[] smallerArr, int[] biggerArr)
        {
            {
                Node head = LinkedListHelper.CreateIntLinkedList(input);
                Ex4_2.Partition_v1(ref head, pivot);
                Node iterator     = head;
                int  countSmaller = 0;
                int  countBigger  = 0;
                while (iterator != null)
                {
                    if (iterator.Value >= pivot)
                    {
                        countSmaller++;
                        Assert.That(biggerArr.Contains(iterator.Value));
                    }
                    else
                    {
                        countBigger++;
                        Assert.That(smallerArr.Contains(iterator.Value));
                    }
                    iterator = iterator.Next;
                }
                Assert.That(smallerArr.Length == countSmaller);
                Assert.That(biggerArr.Length == countBigger);
            }

            {
                Node head = LinkedListHelper.CreateIntLinkedList(input);
                Ex4_2.Partition_v2(ref head, pivot);
                Node iterator     = head;
                int  countSmaller = 0;
                int  countBigger  = 0;
                while (iterator != null)
                {
                    if (iterator.Value >= pivot)
                    {
                        countSmaller++;
                        Assert.That(biggerArr.Contains(iterator.Value));
                    }
                    else
                    {
                        countBigger++;
                        Assert.That(smallerArr.Contains(iterator.Value));
                    }
                    iterator = iterator.Next;
                }
                Assert.That(smallerArr.Length == countSmaller);
                Assert.That(biggerArr.Length == countBigger);
            }
        }
コード例 #12
0
        public static void TestDeleteNode()
        {
            Console.WriteLine("Delete the linked list node with direct reference");
            DeleteNodeWithDirectReference delNode = new DeleteNodeWithDirectReference();

            SingleLinkedListNode <int> ll = LinkedListHelper.CreateSinglyLinkedList(10);

            LinkedListHelper.PrintSinglyLinkedList(ll);
            SingleLinkedListNode <int> rndNode = LinkedListHelper.GetRandomNode(ll, 10);

            Console.WriteLine("The random node selected is" + rndNode.Data);
            delNode.DeleteNode(rndNode);
            Console.WriteLine("The linked list after node deletion is");
            LinkedListHelper.PrintSinglyLinkedList(ll);
        }
コード例 #13
0
        public void TestPossibleCircularReferenceException()
        {
            var entry = GenerateList(3);

            // make closed loop
            var last = entry;

            while (last.Next != null)
            {
                last = last.Next;
            }
            last.Next = entry.Next;

            LinkedListHelper.Get5thElementFromTheTail(entry);
        }