Пример #1
0
        public void TestMethodDoubleLinkedListReverse()
        {
            ArrayList expected = new ArrayList();

            expected.Add(10);
            expected.Add(5);
            expected.Add(2);
            expected.Add(1);

            var list = new DoubleLinkedList <int>();

            list.AddLast(5);
            list.AddLast(10);
            list.AddFirst(2);
            list.AddFirst(1);
            list.Reverse();

            ArrayList actual = new ArrayList();

            foreach (var item in list)
            {
                actual.Add(item);
            }

            CollectionAssert.AreEqual(expected, actual);
        }
Пример #2
0
    static void Main(string[] args)
    {
        try
        {
            DoubleLinkedList <int> ItemList = new DoubleLinkedList <int>();

            ItemList.AddFirst(0);
            ItemList.AddLast(6);
            ItemList.AddLast(7);
            ItemList.AddLast(8);
            ItemList.AddLast(9);

            ItemList.AddAfter(1, 0);
            ItemList.AddAfter(2, 1);
            ItemList.AddBefore(5, 6);
            ItemList.AddBefore(4, 5);
            ItemList.AddBefore(3, 4);

            foreach (var item in ItemList)
            {
                Console.WriteLine(item.ToString());
            }

            Console.WriteLine(string.Format("Count = {0}", ItemList.Count));
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }

        Console.Read();
    }
Пример #3
0
        public void Test1()
        {
            var list = new DoubleLinkedList <int>();

            list.AddLast(10);
            list.AddFirst(20);
            list.AddFirst(30);
            list.AddLast(5);
            list.Insert(20, 12);
            list.Insert(20, 25, false);
            list.Insert(105, 105);
            list.Insert(30, 40, false);
            list.Contains(105);
            list.Contains(30);
            list.Contains(40);
            list.Contains(400);
            list.Insert(20, 12);
            list.Insert(12, 400);
            //list = list.Reverse();
            list.Delete(400);
            list.Delete(5);
            list.Delete(105);
            list.Delete(30);
            list.Delete(12);
            list.Insert(20, 12);
            list.Insert(20, 12);
            list.Insert(20, 12);
            list.DeleteAll(12);
        }
Пример #4
0
        public void AddLastTest(int a, int[] ex)
        {
            DoubleLinkedList DlList = new DoubleLinkedList();

            DlList.AddLast(a);
            DlList.AddLast(a);
            int[] actual = DlList.ToArray();
            Assert.AreEqual(ex, actual);
        }
        public void TestCountOnAddLastMethod()
        {
            var linkedList = new DoubleLinkedList<int>();
            linkedList.AddLast(3);
            linkedList.AddLast(2);
            linkedList.AddLast(1);

            Assert.AreEqual(3, linkedList.Count);
        }
Пример #6
0
        public void TestCountOnAddLastMethod()
        {
            var linkedList = new DoubleLinkedList <int>();

            linkedList.AddLast(3);
            linkedList.AddLast(2);
            linkedList.AddLast(1);

            Assert.AreEqual(3, linkedList.Count);
        }
Пример #7
0
    public void FirstOrDefaultTest()
    {
        IDoubleLinkedList <int> list = new DoubleLinkedList <int>();

        list.AddLast(0);
        list.AddLast(1);
        list.AddLast(2);

        Assert.Equal(list.FirstOrDefault(0, null).Value, 0);
        Assert.Equal(list.FirstOrDefault(1, null).Value, 1);
        Assert.Equal(list.FirstOrDefault(2, null).Value, 2);
    }
Пример #8
0
        public void AddLast_returned_true()
        {
            int expected = 5;

            DoubleLinkedList <int> list = new DoubleLinkedList <int>();

            list.AddLast(1);
            list.AddLast(5);
            int actual = list.Last.Value;

            Assert.AreEqual(expected, actual);
        }
Пример #9
0
        public void DisplayForward_ShouldDisplayAllElements_StartFromTheLast()
        {
            var list = new DoubleLinkedList <int>();

            list.AddFirst(2);
            list.AddLast(3);
            list.AddFirst(1);
            list.AddLast(4);
            list.AddFirst(0);

            Assert.AreEqual("43210", list.DisplayBackward());
        }
Пример #10
0
        public void ManyAddAddLast()
        {
            //Arrange
            DoubleLinkedList <int> doubleLinkedList = new DoubleLinkedList <int>();

            //Act
            doubleLinkedList.AddLast(1);
            doubleLinkedList.AddLast(2);
            //Assert
            Assert.Equal(doubleLinkedList.Last.Value, 2);
            Assert.Equal(doubleLinkedList.Last.Prev.Value, 1);
        }
Пример #11
0
    public void AddLastTest()
    {
        IDoubleLinkedList <int> list = new DoubleLinkedList <int>();

        list.AddLast(0);
        list.AddLast(1);
        list.AddLast(2);
        list.AddLast(3);
        list.AddLast(4);

        CheckListOrder(list);
    }
Пример #12
0
        public void FullListContainsTest()
        {
            DoubleLinkedList <int> list = new DoubleLinkedList <int>();

            list.AddLast(1);
            list.AddLast(55);
            list.AddFirst(13);
            list.AddLast(4);
            list.AddFirst(45345);
            Assert.IsTrue(list.Contains(4) && list.Contains(1) && list.Contains(55) && list.Contains(13) && list.Contains(4) && list.Contains(45345));
            Assert.IsFalse(list.Contains(5));
            Assert.IsFalse(list.Contains(37));
        }
        public void ReverseTest()
        {
            var list = new DoubleLinkedList <int>();

            list.AddLast(1);
            list.AddLast(2);
            list.AddLast(3);
            list.Reverse();
            var a        = list.ToArray();
            var expected = new[] { 3, 2, 1 };

            CollectionAssert.AreEqual(expected, a);
        }
Пример #14
0
        public void TestFirstMiddleLastElementsOnAddLastMethod()
        {
            var linkedList = new DoubleLinkedList <int>();

            linkedList.AddLast(1);
            linkedList.AddLast(2);
            linkedList.AddLast(3);

            Assert.AreEqual(1, linkedList.First.Value);
            Assert.AreEqual(2, linkedList.First.Next.Value);
            Assert.AreEqual(3, linkedList.Last.Value);
            Assert.AreEqual(3, linkedList.Count);
        }
Пример #15
0
        public void TestFindMethodOnExistedElementThatIsPlacedAtTheEnd()
        {
            var linkedList = new DoubleLinkedList <int>();

            linkedList.AddFirst(3);
            linkedList.AddFirst(2);
            linkedList.AddFirst(1);
            linkedList.AddLast(4);
            linkedList.AddLast(7);

            Assert.IsNotNull(linkedList.Find(4));
            Assert.AreEqual(4, linkedList.Find(4).Value);
            Assert.AreEqual(5, linkedList.Count);
        }
Пример #16
0
        public void CheckDoubleListImplementation()
        {
            var        myList  = new DoubleLinkedList <int>();
            List <int> netList = new List <int>();

            myList.AddLast(1);
            foreach (var i in myList)
            {
                netList.Add(i);
            }
            LinkedList <int> nwtList = new LinkedList <int>();

            Assert.Equal(1, netList[0]);

            myList.AddLast(0);
            Assert.Equal(1, myList.Head.Value);
            Assert.Equal(0, myList.Last.Value);

            DoubleLinkedList <int> my3 = new DoubleLinkedList <int>(new[] { 1, 2, 3 });

            var node2 = my3.Find(2);

            my3.Remove(node2);

            netList.Clear();
            foreach (var i in my3)
            {
                netList.Add(i);
            }

            Assert.Equal(1, netList[0]);
            Assert.Equal(3, netList[1]);

            my3.Remove(my3.Head);

            netList.Clear();
            foreach (var i in my3)
            {
                netList.Add(i);
            }
            Assert.Equal(3, netList[0]);

            var my2List = new DoubleLinkedList <int>(new int[] { 1, 2, 3 });

            my2List.Remove(my2List.Find(3));
            my2List.Remove(my2List.Find(1));
            my2List.Remove(my2List.Find(2));

            Assert.Null(my2List.Head);
        }
Пример #17
0
    public void AddAfterTest()
    {
        IDoubleLinkedList <int> list = new DoubleLinkedList <int>();

        list.AddLast(0);
        list.AddLast(3);
        list.AddAfter(4, 3);
        Assert.Throws <ElementNotFoundException <int> >(() => list.AddAfter(-2, 5));
        list.AddAfter(1, 0);
        list.AddAfter(2, 1);
        Assert.Throws <ElementNotFoundException <int> >(() => list.AddAfter(5, 5));

        CheckListOrder(list);
    }
Пример #18
0
    public void AddBeforeTest()
    {
        IDoubleLinkedList <int> list = new DoubleLinkedList <int>();

        list.AddLast(1);
        list.AddLast(4);
        list.AddBefore(3, 4);
        Assert.Throws <ElementNotFoundException <int> >(() => list.AddAfter(2, -5));
        list.AddBefore(2, 3);
        list.AddBefore(0, 1);
        Assert.Throws <ElementNotFoundException <int> >(() => list.AddAfter(-2, 5));

        CheckListOrder(list);
    }
Пример #19
0
    public void IsEmptyTest()
    {
        IDoubleLinkedList <int> list = new DoubleLinkedList <int>();

        Assert.Equal(list.IsEmpty, true);

        list.AddFirst(0);

        Assert.Equal(list.IsEmpty, false);

        list.AddLast(1);
        list.AddLast(2);

        Assert.Equal(list.IsEmpty, false);
    }
Пример #20
0
        public void AddLastTest()
        {
            DoubleLinkedList <int> dll = new DoubleLinkedList <int>();

            dll.AddLast(1);
            dll.AddLast(2);
            dll.AddLast(3);
            int[] ans = new int[] { 1, 2, 3 };
            int   i   = 0;

            foreach (var item in dll)
            {
                Assert.AreEqual(item, ans[i]);
                i++;
            }
        }
Пример #21
0
        public void DoubleLinkedListTest2()
        {
            //Arrange
            int a = -9;

            //Act
            DoubleLinkedList <int> actual = new DoubleLinkedList <int>();

            actual.AddFirst(-9);
            actual.AddLast(5);
            actual.AddLast(16);
            actual.Reverse();

            //Assert
            Assert.AreEqual(a, actual.Last.Value, "Method is incorrect");
        }
Пример #22
0
        public void StringWithNullInsertionSortTest()
        {
            DoubleLinkedList <string> listStr = new DoubleLinkedList <string>();

            listStr = new DoubleLinkedList <string>();
            listStr.AddLast("BBB");
            listStr.AddLast("aaa");
            listStr.AddLast(null);
            listStr.AddLast("abc");
            listStr.InsertionSortWithDelegate((value1, value2) => string.Compare(value1, value2));

            Assert.AreEqual(null, listStr[0]);
            Assert.AreEqual("aaa", listStr[1]);
            Assert.AreEqual("abc", listStr[2]);
            Assert.AreEqual("BBB", listStr[3]);
        }
Пример #23
0
        public void Reverse_expected_01234_actual_43210_reverse_returned_true()
        {
            DoubleLinkedList <int> expected = new DoubleLinkedList <int>();

            for (int i = 0; i < 5; i++)
            {
                expected.AddLast(i);
            }

            int start_index = 0;
            int count       = 5;

            DoubleLinkedList <int> actual = new DoubleLinkedList <int>();

            for (int i = 0; i < 5; i++)
            {
                actual.AddFirst(i);
            }
            actual = actual.Reverse(start_index, count);

            Assert.AreEqual(expected.Count, actual.Count);

            DoubleLinkedListNode <int> source_node  = expected.First;
            DoubleLinkedListNode <int> reverse_node = actual.First;

            while (source_node != null && reverse_node != null)
            {
                Assert.AreEqual(reverse_node.Value, source_node.Value);
                source_node  = source_node.Next;
                reverse_node = reverse_node.Next;
            }
        }
Пример #24
0
    public void RemoveLastTest()
    {
        IDoubleLinkedList <int> list = new DoubleLinkedList <int>();

        list.AddLast(0);
        list.AddLast(1);
        list.AddLast(2);

        list.RemoveLast();

        Assert.NotEmpty(list);
        Assert.DoesNotContain(2, list);
        Assert.Contains(0, list);
        Assert.Contains(1, list);
        Assert.Equal(1, list.Last.Value);
        Assert.Equal(0, list.Last.Prev.Value);
    }
        public void AddLastTest()
        {
            var list = new DoubleLinkedList <int>();

            list.AddFirst(1);
            list.AddLast(2);
            Assert.AreEqual(2, list.Last());
        }
Пример #26
0
        public void OneElement_AddLast_LastShouldBeEqualFirst()
        {
            var list = new DoubleLinkedList <int>();

            list.AddLast(1);

            Assert.AreEqual(list.GetFirst(), list.GetLast());
        }
Пример #27
0
        public void DoubleLinkedList_AddLast_ReturnsCorrectElement(int value)
        {
            var list = new DoubleLinkedList <int>();

            list.AddLast(1);

            Assert.AreEqual(value, list.GetLast());
        }
Пример #28
0
        static void Main(string[] args)
        {
            DoubleLinkedList <string> LIST = new DoubleLinkedList <string>();

            // добавление элементов
            LIST.AddLast("Katya");
            LIST.AddLast("Dasha");
            LIST.AddLast("Ivan");
            LIST.AddLast("Sveta");

            // выводим элементы
            foreach (var item in LIST)
            {
                Console.Write(" " + item);
            }
            Console.WriteLine();
            Console.WriteLine(LIST.Size);
            Console.WriteLine("Первый=" + LIST.First());
            Console.WriteLine("Последний=" + LIST.Last());
            Console.WriteLine("Позиция Dasha: " + LIST.IndexOf("Dasha"));
            Console.WriteLine("Позиция Kris: " + LIST.IndexOf("Kris"));
            // удаляем элемент
            LIST.Remove("Dasha");
            foreach (var item in LIST)
            {
                Console.Write(" " + item);
            }

            Console.WriteLine();
            Console.WriteLine(LIST.Size);
            // добавляем элемент в начало
            LIST.AddFirst("Liza");
            foreach (var item in LIST)
            {
                Console.Write(" " + item);
            }
            Console.WriteLine();

            Console.WriteLine(LIST.Size);
            LIST.Clear();
            Console.WriteLine("clear");

            Console.WriteLine(LIST.Size);

            Console.ReadKey();
        }
        public void AddLastTest(int[] array, int value, int[] expArray)
        {
            DoubleLinkedList expected = new DoubleLinkedList(expArray);
            DoubleLinkedList actual   = new DoubleLinkedList(array);

            actual.AddLast(value);
            Assert.AreEqual(expected, actual);
        }
Пример #30
0
        public void SortDescTest(int[] array, int[] ex)
        {
            DoubleLinkedList DlList = new DoubleLinkedList();

            DlList.AddLast(array);
            DlList.Head = DlList.SortDesc(DlList.Head);
            int[] actual = DlList.ToArray();
            Assert.AreEqual(ex, actual);
        }
Пример #31
0
        public void GetSizeTest(int count, int ex)
        {
            DoubleLinkedList DlListResult = new DoubleLinkedList();

            switch (count)
            {
            case 1:
                DoubleLinkedList DlList = new DoubleLinkedList();
                for (int i = 0; i < 100000; i++)
                {
                    DlList.AddLast(i);
                }
                DlListResult = DlList;
                break;

            case 2:
                DoubleLinkedList DlList2 = new DoubleLinkedList();
                for (int i = 0; i < 100; i++)
                {
                    DlList2.AddLast(i);
                }
                DlListResult = DlList2;
                break;

            case 3:
                DoubleLinkedList DlList3 = new DoubleLinkedList();
                for (int i = 0; i < 1; i++)
                {
                    DlList3.AddLast(i);
                }
                DlListResult = DlList3;
                break;

            case 4:
                DoubleLinkedList DlList4 = new DoubleLinkedList();
                for (int i = 0; i < 5; i++)
                {
                    DlList4.AddLast(i);
                }
                DlListResult = DlList4;
                break;

            case 5:

                DoubleLinkedList DlList5 = new DoubleLinkedList();
                for (int i = 0; i < 0; i++)
                {
                    DlList5.AddLast(i);
                }
                DlListResult = DlList5;
                break;
            }

            int actual = DlListResult.GetSize();

            Assert.AreEqual(ex, actual);
        }
        public void TestLastElementOnAddFirstMethod()
        {
            var linkedList = new DoubleLinkedList<int>();
            linkedList.AddLast(1);

            Assert.AreEqual(1, linkedList.First.Value);
            Assert.AreEqual(1, linkedList.Last.Value);
            Assert.AreEqual(1, linkedList.Count);
        }
        public void TestFirstMiddleLastElementsOnAddLastMethod()
        {
            var linkedList = new DoubleLinkedList<int>();
            linkedList.AddLast(1);
            linkedList.AddLast(2);
            linkedList.AddLast(3);

            Assert.AreEqual(1, linkedList.First.Value);
            Assert.AreEqual(2, linkedList.First.Next.Value);
            Assert.AreEqual(3, linkedList.Last.Value);
            Assert.AreEqual(3, linkedList.Count);
        }
        /// <summary>
        /// Connecting childs to form and store the full path.
        /// </summary>
        /// <param name="parentNode">The startup Node value.</param>
        /// <param name="currentResult">The list stores current paths in every moment.</param>
        /// <param name="allPaths">The collection stores all paths.</param>
        private void ConnectAllPathsDFS(Node<int> parentNode, DoubleLinkedList<int> currentResult, ref List<DoubleLinkedList<int>> allPaths)
        {
            currentResult.AddLast(parentNode.Value);

            // For each child go and visit its subtree
            foreach (var child in parentNode.Childs)
            {
                this.ConnectAllPathsDFS(child, currentResult, ref allPaths);
            }

            if (parentNode.Childs.Count == 0)
            {
                allPaths.Add(new DoubleLinkedList<int>(currentResult));
            }

            currentResult.RemoveLast();
        }
        public void TestClearMethod()
        {
            var linkedList = new DoubleLinkedList<int>();
            linkedList.AddFirst(3);
            linkedList.AddLast(2);
            linkedList.AddAfter(linkedList.First, 1);
            linkedList.AddBefore(linkedList.Last, 3);

            linkedList.Clear();

            Assert.AreEqual(0, linkedList.Count);
            Assert.IsNull(linkedList.First);
            Assert.IsNull(linkedList.Last);
        }
        public void TestFindMethodOnExistedElementThatIsPlacedAtTheEnd()
        {
            var linkedList = new DoubleLinkedList<int>();
            linkedList.AddFirst(3);
            linkedList.AddFirst(2);
            linkedList.AddFirst(1);
            linkedList.AddLast(4); 
            linkedList.AddLast(7); 

            Assert.IsNotNull(linkedList.Find(4));
            Assert.AreEqual(4, linkedList.Find(4).Value);
            Assert.AreEqual(5, linkedList.Count);
        }