예제 #1
0
        public void RemoveTest()
        {
            MyLinkedList <string> list = new MyLinkedList <string>();

            CollectionAssert.AreEqual(new string[] { }, list);
            list.AddLast("abs");
            CollectionAssert.AreEqual(new string[] { "abs" }, list);
            Assert.IsFalse(list.Remove("zzz"));
            CollectionAssert.AreEqual(new string[] { "abs" }, list);
            Assert.IsFalse(list.Remove("zzz"));
            CollectionAssert.AreEqual(new string[] { "abs" }, list);
            list.AddLast("zzz");
            CollectionAssert.AreEqual(new string[] { "abs", "zzz" }, list);
            list.AddLast("ыыыы");
            CollectionAssert.AreEqual(new string[] { "abs", "zzz", "ыыыы" }, list);
            Assert.IsTrue(list.Remove("zzz"));
            CollectionAssert.AreEqual(new string[] { "abs", "ыыыы" }, list);
            Assert.IsFalse(list.Remove("zzz"));
            CollectionAssert.AreEqual(new string[] { "abs", "ыыыы" }, list);
            Assert.IsFalse(list.Remove("zzz"));
            CollectionAssert.AreEqual(new string[] { "abs", "ыыыы" }, list);
            Assert.IsTrue(list.Remove("abs"));
            CollectionAssert.AreEqual(new string[] { "ыыыы" }, list);
            Assert.IsTrue(list.Remove("ыыыы"));
            CollectionAssert.AreEqual(new string[] { }, list);
            Assert.IsFalse(list.Remove("abs"));
            CollectionAssert.AreEqual(new string[] { }, list);
            Assert.IsFalse(list.Remove("ыыыы"));
            CollectionAssert.AreEqual(new string[] { }, list);
            list.AddLast("sss");
            CollectionAssert.AreEqual(new string[] { "sss" }, list);
            Assert.IsTrue(list.Remove("sss"));
            CollectionAssert.AreEqual(new string[] { }, list);
        }
예제 #2
0
        static void Main(string[] args)
        {
            MyLinkedList<string> list = new MyLinkedList<string>();

            list.AddLast("pesho");
            list.AddLast("gosho");
            list.AddLast("anna");
            list.Add(1, "mariq");
            list.AddFirst("ala bala");

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

            list.Remove("anna");
            list.RemoveFirst();
            list.RemoveLast();

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

            list.Clear();

            Console.WriteLine(list.Count);
        }
예제 #3
0
        private static void TestMyLinkedList()
        {
            MyLinkedList<int> foo = new MyLinkedList<int>();
            foo.AddLast(1);
            foo.AddLast(2);
            foo.AddLast(3);

            try
            {
                foo.AddBefore(foo.First.Next.Next.Next, 7);
                foreach (int item in foo)
                {
                    Console.WriteLine(item);
                }
            }
            catch (InvalidOperationException e)
            {
                Console.WriteLine(e.Message);
            }
            Console.WriteLine("---------");
            foo.Remove(7);
            foreach(int item in foo)
            {
                Console.WriteLine(item);
            }
        }
예제 #4
0
        public void ClearTest()
        {
            MyLinkedList <string> list = new MyLinkedList <string>();

            list.AddLast("abs");
            list.AddLast("zzz");
            list.AddLast("ыыыы");
            CollectionAssert.AreEqual(new string[] { "abs", "zzz", "ыыыы" }, list);
            list.Clear();
            CollectionAssert.AreEqual(new string[] { }, list);
        }
예제 #5
0
        private MyLinkedList MockList()
        {
            MyLinkedList linkedList1 = new MyLinkedList(1);

            linkedList1.AddLast(2);
            linkedList1.AddLast(3);
            linkedList1.AddLast(4);
            linkedList1.AddLast(5);

            return(linkedList1);
        }
예제 #6
0
        public void RemoveTest1()
        {
            MyLinkedList <string> list = new MyLinkedList <string>();

            list.AddLast("abs");
            var node = list.AddLast("zzz");

            list.AddLast("ыыыы");

            Assert.IsTrue(list.Contains("zzz"));
            list.Remove(node);
            Assert.IsFalse(list.Contains("zzz"));
        }
예제 #7
0
        public void CopyToTest1()
        {
            Array test = new string[5];
            MyLinkedList <string> list = new MyLinkedList <string>();

            list.AddLast("abs");
            list.AddLast("zzz");
            list.AddLast("ыыыы");
            list.CopyTo(test, 1);
            CollectionAssert.AreEqual(new string[5] {
                null, "abs", "zzz", "ыыыы", null
            }, test);
        }
예제 #8
0
        public void ContainsTest()
        {
            MyLinkedList <string> list = new MyLinkedList <string>();

            list.AddLast("abs");
            list.AddLast("zzz");
            list.AddLast("ыыыы");
            Assert.IsTrue(list.Contains("abs"));
            Assert.IsTrue(list.Contains("zzz"));
            Assert.IsTrue(list.Contains("ыыыы"));
            Assert.IsFalse(list.Contains("iqewojf   2"));
            Assert.IsFalse(list.Contains(""));
            Assert.IsFalse(list.Contains(null));
        }
예제 #9
0
 public void UpdateSupply(double x, double y, int amount)
 {
     if (x <= 0 || y <= 0 || amount <= 0)
     {
         _notifier.OnError("Invalid box size or amount");
     }
     else
     {
         if (amount > _maxBoxesNumber)
         {
             amount = _maxBoxesNumber;
         }
         BoxBase tmp = new BoxBase(x);
         if (_mainTree.Search(tmp, out BoxBase foundedBase))
         {
             BoxHeight node = new BoxHeight(y);
             if (foundedBase.HeightTree.Search(node, out BoxHeight foundedHeight))
             {
                 //box exist
                 if (foundedHeight.Count + amount < _maxBoxesNumber)
                 {
                     foundedHeight.Count += amount;
                     _notifier.OnSuccess($"{amount} units of Box ({x},{y}) was added successfully");
                 }
                 else
                 {
                     foundedHeight.Count = _maxBoxesNumber;
                     _notifier.OnSuccess($"Box ({x},{y}) has reach the limit of {_maxBoxesNumber}");
                 }
             }
             else
             {
                 _boxesList.AddLast(new BoxData(foundedBase));
                 foundedBase.HeightTree.Add(new BoxHeight(y, false, amount, _boxesList.End));
                 _boxesList.End.data.HeightData = foundedBase.HeightTree.LastUpdate.data;
                 _notifier.OnSuccess($"{amount} units of Box ({x},{y}) was added successfully");
             }
         }
         else
         {
             BoxBase node = new BoxBase(x, false);
             _boxesList.AddLast(new BoxData(node));
             node.HeightTree.Add(new BoxHeight(y, false, amount, _boxesList.End));
             _boxesList.End.data.HeightData = node.HeightTree.LastUpdate.data;
             _mainTree.Add(node);
             _notifier.OnSuccess($"{amount} units of Box ({x},{y}) was added successfully");
         }
     }
 }
예제 #10
0
        public static void Main(string[] args)
        {
            MyLinkedList list = new MyLinkedList();

            list.AddFirst("Hello");

            list.AddLast("world");

            list.AddLast("!");
            list.AddLast("!");
            list.AddLast("!");
            list.AddLast("!");

            list.RemoveByIndex(0);

            list.AddFirst("Hi");

            // check = true
            var check = list.RemoveEveryEqual("!");

            var array = list.ToArray();

            // Hi
            // world
            foreach (var @object in array)
            {
                Console.WriteLine(@object);
            }

            // -1
            Console.WriteLine(list.IndexOf("Bob"));

            // 0
            Console.WriteLine(list.IndexOf("Hi"));

            // 1
            Console.WriteLine(list.IndexOf("world"));

            list[1] = "beautiful";
            array   = list.ToArray();

            // Hi
            // beautiful
            // world
            foreach (var @object in array)
            {
                Console.WriteLine(@object);
            }
        }
예제 #11
0
        public void Test1()
        {
            MyLinkedList list = new MyLinkedList();

            list.AddLast(new MyNode(12));
            list.AddLast(new MyNode(2));
            list.AddLast(new MyNode(3));
            list.AddLast(new MyNode(14));
            list.AddLast(new MyNode(13));
            list.AddLast(new MyNode(1));
            list.AddLast(new MyNode(4));
            list.AddLast(new MyNode(11));
            list.AddLast(new MyNode(15));
            list.AddLast(new MyNode(5));
        }
예제 #12
0
파일: Program.cs 프로젝트: RosenTodorov/SVN
        static void Main(string[] args)
        {
            MyLinkedList<int> list = new MyLinkedList<int>();
            list.AddFirst(5);
            list.AddAfter(list.FirstElement, -1);
            Console.WriteLine(list);
            list.AddFirst(9);
            Console.WriteLine(list);

            list.Remove(5);
            Console.WriteLine(list);
            return;
            Console.WriteLine();
            Console.WriteLine(list);
            list.AddLast(10);
            Console.WriteLine(list);
            list.AddAfter(list.FirstElement, 111);
            Console.WriteLine(list);
            list.AddAfter(list.FirstElement.NextItem, -100);
            Console.WriteLine(list);
            list.AddBefore(list.FirstElement.NextItem, 999);
            Console.WriteLine(list);
            list.AddBefore(list.FirstElement.NextItem.NextItem.NextItem, 800);
            Console.WriteLine(list);
        }
예제 #13
0
        public static void Main()
        {
            MyLinkedList <int> myList = new MyLinkedList <int>();

            int count = int.Parse(Console.ReadLine());

            for (int i = 0; i < count; i++)
            {
                string[] inParams = Console.ReadLine().Split();
                string   command  = inParams[0];
                int      argument = int.Parse(inParams[1]);

                switch (command)
                {
                case "Add":
                    myList.AddLast(argument);
                    break;

                case "Remove":
                    myList.Remove(argument);
                    break;
                }
            }

            Console.WriteLine(myList.Count);
            Console.WriteLine(string.Join(" ", myList));
        }
예제 #14
0
        public void Test1()
        {
            MyLinkedList list = new MyLinkedList();

            list.AddLast(new MyNode(1));
            list.AddLast(new MyNode(2));
            list.AddLast(new MyNode(3));
            list.AddLast(new MyNode(4));
            list.AddLast(new MyNode(5));
            int initCount = list.Count;

            deleteMiddleNode.DeleteNode(list, 3);
            int newCount = list.Count;

            Assert.AreEqual(initCount, newCount + 1);
        }
예제 #15
0
        public void TestAddContains()
        {
            //Assign
            MyLinkedList <int> list = new MyLinkedList <int>();

            //Act
            list.AddLast(2);
            list.AddLast(3);
            list.AddLast(4);
            list.AddFirst(8);

            //Assert
            Assert.AreEqual(true, list.Contains(3));
            Assert.AreEqual(4, list.Count());
            Assert.AreEqual(true, list.Contains(8));
        }
예제 #16
0
        public void TestIndex()
        {
            //Assign
            MyLinkedList <int> list = new MyLinkedList <int>();

            //Act
            list.AddLast(2);
            list.AddLast(3);
            list.AddLast(4);
            //Assert
            Assert.AreEqual(3, list.Count());
            Assert.ThrowsException <ArgumentOutOfRangeException>(() => list[10]);
            Assert.AreEqual(2, list[0].Data);
            Assert.AreEqual(3, list[1].Data);
            Assert.AreEqual(4, list[2].Data);
        }
예제 #17
0
        public void TestFind()
        {
            //Assign
            MyLinkedList <int> list = new MyLinkedList <int>();

            //Act
            list.AddLast(2);
            list.AddLast(3);
            list.AddLast(4);
            var node = list.Find(3);

            //Assert
            Assert.AreNotEqual(1, node.Data);
            Assert.AreEqual(3, node.Data);
            Assert.AreNotEqual(4, node.Data);
        }
예제 #18
0
        public void TestClear()
        {
            //Assign
            MyLinkedList <int> list = new MyLinkedList <int>();

            //Act
            list.AddLast(2);
            list.AddLast(3);
            list.AddLast(4);
            list.Clear();
            list.AddLast(1);
            //Assert
            Assert.IsFalse(list.Contains(2));
            Assert.IsFalse(list.Contains(3));
            Assert.IsTrue(list.Contains(1));
        }
        public void MergeWorksWhenSecondListIsLonger(int k, int value)
        {
            //Arrange
            MyLinkedList list1 = new MyLinkedList(new Node(1));
            MyLinkedList list2 = new MyLinkedList(new Node(5));

            //Act
            list1.AddLast(new Node(2));
            list2.AddLast(new Node(10));
            list2.AddLast(new Node(15));
            list2.AddLast(new Node(20));
            list1.Merge(list1, list2);
            Node found = list1.KthElement(k);

            //Assert
            Assert.Equal(value, found.Value);
        }
예제 #20
0
    public void TestAddLast()
    {
        //Assign
        MyLinkedList <int> list = new MyLinkedList <int>();
        int value = 5;

        //Act
        list.AddLast(1);
        list.AddLast(2);
        list.AddLast(90);
        list.AddLast(34);
        var node = list.AddLast(value);

        //Assert
        Assert.AreEqual(value, node.Data);
        Assert.AreEqual(5, list.Count);
    }
        public void KthElementReturnsNode(int value, int expected)
        {
            //Arrange
            MyLinkedList ll = new MyLinkedList(new Node(1));
            Node         n2 = new Node(2);
            Node         n3 = new Node(3);
            Node         n4 = new Node(4);

            //Act
            ll.AddLast(n2);
            ll.AddLast(n3);
            ll.AddLast(n4);
            Node found = ll.KthElement(value);

            //Assert
            Assert.Equal(expected, found.Value);
        }
예제 #22
0
        public void TestAddString()
        {
            //Assign
            MyLinkedList <string> list = new MyLinkedList <string>();

            //Act
            list.AddLast("2");
            list.AddLast("pootIs");
            list.AddLast("åäö");
            list.AddFirst("8");

            //Assert
            Assert.AreEqual(true, list.Contains("åäö"));
            Assert.AreEqual(4, list.Count());
            Assert.AreEqual(true, list.Contains("8"));
            Assert.AreEqual(true, list.Contains("pootIs"));
        }
예제 #23
0
파일: Program.cs 프로젝트: flyer87/DSA
    static void Main(string[] args)
    {
        MyLinkedList <int> linkedList = new MyLinkedList <int>();

        linkedList.AddFirst(1);
        linkedList.AddFirst(2);
        linkedList.AddLast(3);
        linkedList.RemoveFirst();
    }
예제 #24
0
        public void TestForeach()
        {
            //Assign
            MyLinkedList <int> list = new MyLinkedList <int>();
            int localCount          = 0;

            //Act
            list.AddLast(2);
            list.AddLast(3);
            list.AddLast(4);
            //Assert
            foreach (var item in list)
            {
                localCount++;
            }
            Assert.AreEqual(localCount, list.Count());
            Assert.AreNotEqual(1, localCount);
        }
        public void MergePutsNodesInCorrectOrder(int k, int value)
        {
            //Arrange
            MyLinkedList list1 = new MyLinkedList(new Node(1));
            MyLinkedList list2 = new MyLinkedList(new Node(5));

            //Act
            list1.AddLast(new Node(2));
            list1.AddLast(new Node(3));
            list1.AddLast(new Node(4));
            list2.AddLast(new Node(10));
            list2.AddLast(new Node(15));
            list1.Merge(list1, list2);
            Node found = list1.KthElement(k);

            //Assert
            Assert.Equal(value, found.Value);
        }
예제 #26
0
        public void FindLastTest()
        {
            MyLinkedList <string> list = new MyLinkedList <string>();

            MyLinkedListNode <string>[] nodes =
            {
                list.AddLast("abs"),
                list.AddLast("zzz"),
                list.AddLast("ыыыы"),
                list.AddLast("abs")
            };
            Assert.AreNotEqual(nodes[0], list.FindLast("abs"));
            Assert.AreEqual(nodes[1], list.FindLast("zzz"));
            Assert.AreEqual(nodes[2], list.FindLast("ыыыы"));
            Assert.AreEqual(nodes[3], list.FindLast("abs"));
            Assert.IsNull(list.FindLast("iqewojf   2"));
            Assert.IsNull(list.FindLast(""));
            Assert.IsNull(list.FindLast(null));
        }
예제 #27
0
        public void FirstAndLastEqualsTest()
        {
            MyLinkedList <string> list = new MyLinkedList <string>();

            list.AddLast("abs");
            Assert.AreEqual(list.Last, list.First);
            list.Clear();
            list.AddFirst("aaffa");
            Assert.AreEqual(list.First, list.Last);
        }
예제 #28
0
        internal MyLinkedList <T> ArrayToMyList <T>(T[] array)
        {
            var myList = new MyLinkedList <T>();

            foreach (T value in array)
            {
                myList.AddLast(value);
            }
            return(myList);
        }
예제 #29
0

        
예제 #30
0
        public MyLinkedList <int> ListGenerator(int[] array)
        {
            MyLinkedList <int> list = new MyLinkedList <int>();

            for (int i = 0; i < array.Length; i++)
            {
                list.AddLast(array[i]);
            }

            return(list);
        }
예제 #31
0
        public void AddAfterTest()
        {
            MyLinkedList <string> list = new MyLinkedList <string>();

            CollectionAssert.AreEqual(new string[] { }, list);
            var node = list.AddLast("abs");

            CollectionAssert.AreEqual(new string[] { "abs" }, list);
            list.AddAfter(node, "zz");
            CollectionAssert.AreEqual(new string[] { "abs", "zz" }, list);
        }
예제 #32
0
    static void Main()
    {
        Console.WriteLine("Dot Net LinkedList");
        LinkedList<int> dotNetList = new LinkedList<int>();
        dotNetList.AddFirst(3);
        dotNetList.AddFirst(1);
        dotNetList.AddBefore(dotNetList.Last, 2);
        dotNetList.AddBefore(dotNetList.First, 4);
        dotNetList.AddAfter(dotNetList.Last, 5);
        dotNetList.AddAfter(dotNetList.First, 6);
        dotNetList.AddLast(7);
        dotNetList.AddLast(8);
        dotNetList.RemoveFirst();
        dotNetList.RemoveLast();

        foreach (var item in dotNetList)
        {
            Console.WriteLine(item);
        }
        Console.WriteLine("Dot Net LinkedList.Count = {0}", dotNetList.Count);

        Console.WriteLine();
        Console.WriteLine("My LinkedList<T>");
        MyLinkedList<int> myList = new MyLinkedList<int>();
        myList.AddFirst(3);
        myList.AddFirst(1);
        myList.AddBefore(myList.Last, 2);
        myList.AddBefore(myList.First, 4);
        myList.AddAfter(myList.Last, 5);
        myList.AddAfter(myList.First, 6);
        myList.AddLast(7);
        myList.AddLast(8);
        myList.RemoveFirst();
        myList.RemoveLast();

        foreach (var number in myList)
        {
            Console.WriteLine(number);
        }
        Console.WriteLine("MyList.Count = {0}", myList.Count);
    }
예제 #33
0
        public void AddBeforeTest()
        {
            MyLinkedList <string> list = new MyLinkedList <string>();

            CollectionAssert.AreEqual(new string[] { }, list);
            var node = list.AddLast("abs");

            CollectionAssert.AreEqual(new string[] { "abs" }, list);
            list.AddBefore(node, "zz");
            UnitTest.Writer.WriteAll <string>(list);
            CollectionAssert.AreEqual(new string[] { "zz", "abs" }, list);
        }
        public void KthElementCanGetLastElement(int value)
        {
            //Arrange
            MyLinkedList list1 = new MyLinkedList(new Node(1));

            list1.AddLast(new Node(value));

            //Act
            Node foundNode = list1.KthElement(0);

            //Assert
            Assert.Equal(foundNode.Value, value);
        }