示例#1
0
    public static void Run()
    {
        /*
         * var linkedList = new linkedList();
         * linkedList.Add(4);
         * linkedList.Add(3);
         * linkedList.Add(8);
         * linkedList.Add(7);
         * linkedList.Add(2);
         * Console.WriteLine($"LinkedList: {linkedList}");
         *
         * var k = 4;
         * var result = linkedList.GetKthFromLast(k);
         * Console.WriteLine($" {k}th from last is: {result}");
         */
        var linkedList = new linkedList2();

        linkedList.Add("a");
        linkedList.Add("a");
        linkedList.Add("b");
        linkedList.Add("c");
        linkedList.Add("a");
        Console.WriteLine($"LinkedList: {linkedList}");
        Console.WriteLine($"LinkedList is Palindrome {linkedList.IsPalindrome()}");
    }
示例#2
0
        public void testAddForOneLinkedList2()
        {
            linkedList2 <int> a    = new linkedList2 <int>();
            linkedList2 <int> b    = new linkedList2 <int>();
            string            strA = "";
            string            strB = "";
            Random            rand = new Random(DateTime.Now.Millisecond);

            for (int i = 0; i < rand.Next(5, 10); i++)
            {
                int intA = rand.Next(0, 9);
                a.add(intA);
                strA = strA.Insert(0, intA.ToString());
            }
            for (int i = 0; i < rand.Next(5, 10); i++)
            {
                int intB = rand.Next(0, 9);
                b.add(intB);
                strB = strB.Insert(0, intB.ToString());
            }
            linkedList2 <int> res = linkedList2 <int> .add(a, b);

            string strRes = "";

            for (int i = 0; i < res.countOfElements; i++)
            {
                strRes += res.findElForOneLinkedListFromEnd(i).element;
            }
            int expectdRes = Convert.ToInt32(strA) + Convert.ToInt32(strB);
            int intRes     = Convert.ToInt32(strRes);

            Assert.AreEqual(expectdRes, intRes);
        }
示例#3
0
        public void testDeleteDoublesHashTbInLinkedList2()
        {
            linkedList2 <int> list = new linkedList2 <int>();
            Random            rand = new Random(DateTime.Now.Millisecond);

            for (int i = 0; i < 1000000; i++)
            {
                list.add(i % (1000000 / 2));
            }
            list.deleteDoublesHashTb();
            Assert.AreEqual((1000000 / 2), list.countOfElements);
        }
示例#4
0
        public void testfindAndGetCircledElement2PointerRealiseForOneLinkedList2()
        {
            linkedList2 <int> a    = new linkedList2 <int>();
            Random            rand = new Random(DateTime.Now.Millisecond);

            for (int i = 0; i < 10000000; i++)
            {
                a.add(rand.Next());
            }
            a.createCircle(a.findElForOneLinkedListFromEnd_2pointerRealise(500000));

            Assert.AreEqual(a.findElForOneLinkedListFromEnd_2pointerRealise(500000), a.findAndGetCircledElement2PointerRealise());
        }
示例#5
0
        public void testCreateCircleForOneLinkedList2()
        {
            linkedList2 <int> a    = new linkedList2 <int>();
            Random            rand = new Random(DateTime.Now.Millisecond);

            for (int i = 0; i < 10; i++)
            {
                a.add(rand.Next());
            }
            a.createCircle(a.findElForOneLinkedListFromEnd_2pointerRealise(5));
            Assert.AreEqual(a.findElForOneLinkedListFromEnd_2pointerRealise(0).nextElement, a.findElForOneLinkedListFromEnd_2pointerRealise(5));
            Assert.AreEqual(a.findElForOneLinkedListFromEnd_2pointerRealise(0).nextElement.nextElement, a.findElForOneLinkedListFromEnd_2pointerRealise(4));
        }
示例#6
0
        public void testfindElForOneLinkedListFromEnd_2pointerRealise()
        {
            linkedList2 <int> list = new linkedList2 <int>();
            Random            rand = new Random(DateTime.Now.Millisecond);

            for (int i = 0; i < 1000000; i++)
            {
                list.add(i);
            }
            Assert.AreEqual(999999, list.findElForOneLinkedListFromEnd_2pointerRealise(0).element);
            Assert.AreEqual(999998, list.findElForOneLinkedListFromEnd_2pointerRealise(1).element);
            Assert.AreEqual(989999, list.findElForOneLinkedListFromEnd_2pointerRealise(10000).element);
            Assert.AreEqual(0, list.findElForOneLinkedListFromEnd_2pointerRealise(999999).element);
            // Assert.AreEqual(null, list.findElForOneLinkedListFromEnd_2pointerRealise(1000000).element);
        }
示例#7
0
        public void testFindIntersectionForOneLinkedList2()
        {
            linkedList2 <int> a    = new linkedList2 <int>();
            linkedList2 <int> b    = new linkedList2 <int>();
            Random            rand = new Random(DateTime.Now.Millisecond);

            for (int i = 0; i < 10; i++)
            {
                a.add(i);
            }
            for (int i = 10; i < 15; i++)
            {
                b.add(i);
            }
            b.add(a.findElForOneLinkedListFromEnd_2pointerRealise(5));
            Assert.AreEqual(a.findElForOneLinkedListFromEnd_2pointerRealise(5), linkedList2 <int> .findIntersection(a, b));
        }
示例#8
0
        public void testAddListElementForOneLinkedList2()
        {
            linkedList2 <int> a    = new linkedList2 <int>();
            linkedList2 <int> b    = new linkedList2 <int>();
            Random            rand = new Random(DateTime.Now.Millisecond);

            for (int i = 0; i < 10; i++)
            {
                a.add(i);
            }
            for (int i = 10; i < 15; i++)
            {
                b.add(i);
            }
            b.add(a.findElForOneLinkedListFromEnd_2pointerRealise(5));
            for (int i = 0; i < 5; i++)
            {
                Assert.AreEqual(9 - i, b.findElForOneLinkedListFromEnd_2pointerRealise(i).element);
            }
        }
示例#9
0
        public void testisPalindromRecursiveReleaseForOneLinkedList2()
        {
            linkedList2 <int> a    = new linkedList2 <int>();
            Random            rand = new Random(DateTime.Now.Millisecond);
            int lenghtMas          = 100;

            int[] mas = new int[lenghtMas];
            for (int i = 0; i < lenghtMas; i++)
            {
                mas[i] = rand.Next();
            }
            for (int i = 0; i < lenghtMas; i++)
            {
                a.add(mas[i]);
            }
            for (int i = lenghtMas - 1; i >= 0; i--)
            {
                a.add(mas[i]);
            }
            Assert.AreEqual(true, a.isPalindromRecursiveRelease());
        }
示例#10
0
        public void testDeleteMiddleElForOneLinkedList2()
        {
            linkedList2 <int> list = new linkedList2 <int>();
            Random            rand = new Random(DateTime.Now.Millisecond);
            int countOfListEl      = 10000;

            for (int i = 0; i < countOfListEl; i++)
            {
                list.add(i);
            }
            list.deleteMiddleEl();
            countOfListEl = list.countOfElements;
            Assert.AreEqual((countOfListEl / 2) + 1, list.findElFromEnd_recursiveRealise((countOfListEl / 2)).element);
            list.deleteMiddleEl();
            countOfListEl = list.countOfElements;
            Assert.AreEqual((countOfListEl / 2) + 2, list.findElFromEnd_recursiveRealise((countOfListEl / 2) - 1).element);

            for (int i = 0; i < countOfListEl; i++)
            {
                list.deleteMiddleEl();
            }
            Assert.AreEqual(0, list.countOfElements);
        }