예제 #1
0
        static void Main()
        {
            var musicians = new RankedSet <string> (StringComparer.InvariantCultureIgnoreCase);

            foreach (var m1 in new string[] { "Falco", "k.d. lang", "Madonna", "Tom Petty",
                                              "Joni Mitchell", "Grimes", "Warren Zevon" })
            {
                musicians.Add(m1);
            }

            Console.WriteLine("Candidates:");
            foreach (var item in musicians)
            {
                Console.WriteLine($"  {item}");
            }

            musicians.Remove("Falco");
            musicians.RemoveWhere(IsPolynymous);
            musicians.RemoveRange(1, musicians.Count - 1);

            Console.WriteLine("\nFavorite:");
            foreach (var item in musicians)
            {
                Console.WriteLine($"  {item}");
            }
        }
예제 #2
0
        static void Main()
        {
            set = new RankedSet <int>()
            {
                Capacity = 4
            };

            Console.WriteLine("Empty tree is a single leaf:");
            WriteInfo(true);

            Console.WriteLine("Create sequentially loaded tree of order 4:");
            for (int i = 2; i <= 24; i += 2)
            {
                set.Add(i);
            }
            WriteInfo(true);

            Console.WriteLine("Cascade split by adding 17:");
            set.Add(17);
            WriteInfo();

            Console.WriteLine("Split a leaf by adding 3:");
            set.Add(3);
            WriteInfo();

            Console.WriteLine("Create non-rightmost branch with 2 children by adding 9:");
            set.Add(9);
            WriteInfo();

            Console.WriteLine("Cascade coalesce by removing 2:");
            set.Remove(2);
            WriteInfo();
        }
예제 #3
0
        static void Main()
        {
            set = new RankedSet <int>()
            {
                Capacity = 4
            };

            Console.WriteLine("Create tree of order 4:");
            for (int i = 2; i <= 50; i += 2)
            {
                set.Add(i);
            }

            for (int i = 3; i <= 50; i += 6)
            {
                set.Add(i);
            }
            WriteInfo();

            Console.WriteLine("Add 29,35:");
            set.Add(29);
            set.Add(35);
            WriteInfo();

            Console.WriteLine("Remove 27:");
            set.Remove(27);
            WriteInfo();

            Console.WriteLine("Remove 21:");
            set.Remove(21);
            WriteInfo();

            Console.WriteLine("Remove 22:");
            set.Remove(22);
            WriteInfo();

            Console.WriteLine("Remove 24:");
            set.Remove(24);
            WriteInfo();
        }
예제 #4
0
        static void Main()
        {
            for (int i = 1; i <= 12; i += 1)
            {
                var set = new RankedSet <int>()
                {
                    Capacity = 4
                };

                foreach (int kk in new int[] { 3, 5, 6, 7, 9, 10, 11 })
                {
                    set.Add(kk);
                }
                set.Remove(6); set.Remove(10);
                WriteInfo(set);

                set.SymmetricExceptWith(new int[] { i });
                Console.WriteLine("SymmetricExceptWith " + i + ":");
                WriteInfo(set);
                Console.WriteLine("----");
            }
        }
예제 #5
0
        static void Main()
        {
            set = new RankedSet <int>()
            {
                Capacity = 5
            };

            Console.WriteLine("Create sequentially loaded tree of order 5:");
            for (int i = 2; i <= 66; i += 2)
            {
                set.Add(i);
            }
            WriteInfo();

            Console.WriteLine("Thin the tree by removing several keys:");
            foreach (int i in new int[] { 4, 6, 14, 16, 18, 20, 22, 24, 26, 30, 36, 38, 46 })
            {
                set.Remove(i);
            }
            WriteInfo();

            Console.WriteLine("Coalesce leaves, balance branches by removing 12:");
            set.Remove(12);
            WriteInfo();

            Console.WriteLine("Change a branch by removing 10:");
            set.Remove(10);
            WriteInfo();

            Console.WriteLine("Change the root by removing 50:");
            set.Remove(50);
            WriteInfo();

            Console.WriteLine("Coalesce leaves by removing 40:");
            set.Remove(40);
            WriteInfo();

            Console.WriteLine("Prune rightmost leaf by removing 66:");
            set.Remove(66);
            WriteInfo();

            Console.WriteLine("Coalesce leaves and branches, prune root by removing 8:");
            set.Remove(8);
            WriteInfo();
        }
예제 #6
0
        static void Main()
        {
            set = new RankedSet <int>()
            {
                Capacity = 6
            };

            Console.WriteLine("Create sequentially loaded tree of order 6:");
            for (int i = 2; i <= 60; i += 2)
            {
                set.Add(i);
            }
            WriteInfo(true);

            Console.WriteLine("Create rightmost nodes with 1 key by appending 62:");
            set.Add(62);
            WriteInfo();

            Console.WriteLine("Split leaf by adding 5:");
            set.Add(5);
            WriteInfo();

            Console.WriteLine("Split leaf, cascade split branches by adding 25:");
            set.Add(25);
            WriteInfo();

            Console.WriteLine("Balance leaves, replace 2 pivots by removing 6:");
            set.Remove(6);
            WriteInfo();

            Console.WriteLine("Prune leaf by removing 62:");
            set.Remove(62);
            WriteInfo();

            Console.WriteLine("Remove 54-60:");
            set.Remove(54);
            set.Remove(56);
            set.Remove(58);
            set.Remove(60);
            WriteInfo();

            Console.WriteLine("Prune leaf and branch by removing 52:");
            set.Remove(52);
            WriteInfo();
        }
예제 #7
0
        static void Main()
        {
            set = new RankedSet <int>()
            {
                Capacity = 4
            };

            Console.WriteLine("Create sequentially loaded tree of order 4:");
            for (int i = 2; i <= 44; i += 2)
            {
                set.Add(i);
            }
            WriteInfo();

            Console.WriteLine("Add 1,21:");
            set.Add(1);
            set.Add(21);
            WriteInfo();

            Console.WriteLine("Add 9:");
            set.Add(9);
            WriteInfo();

            Console.WriteLine("Add 27:");
            set.Add(27);
            WriteInfo();

            Console.WriteLine("Remove 44:");
            set.Remove(44);
            WriteInfo();

            Console.WriteLine("Remove 40,42:");
            set.Remove(40);
            set.Remove(42);
            WriteInfo();

            Console.WriteLine("Remove 38:");
            set.Remove(38);
            WriteInfo();

            Console.WriteLine("Remove 34,36:");
            set.Remove(34);
            set.Remove(36);
            WriteInfo();

            Console.WriteLine("Remove 32:");
            set.Remove(32);
            WriteInfo();

            Console.WriteLine("Remove 28:");
            set.Remove(28);
            WriteInfo();

            Console.WriteLine("Seek 30:");
            var isOk = set.Contains(30);

            Console.WriteLine();
            Console.WriteLine("Result = " + isOk);
            Console.WriteLine();

            Console.WriteLine("Remove 30:");
            set.Remove(30);
            WriteInfo();
        }