Example #1
0
        public IHuffmanTree CreateRoot( )
        {
            var nodes = Frequency.Select(symbol => new CNode
                                                       {
                                                           Symbol = symbol.Key, Frequency = symbol.Value
                                                       }).ToList();

            while ( nodes.Count > 1 ) {
                var orderedNodes = nodes.OrderBy( node => node.Frequency ).ToList();

                if (orderedNodes.Count < 2) continue;
                var child = orderedNodes.Take( 2 ).ToList();

                var parent = new CNode {
                                             Symbol = 0x20,
                                             Frequency = child[0].Frequency + child[1].Frequency,
                                             Left = child[0],
                                             Right = child[1]
                                         };

                nodes.Remove( child[0] );
                nodes.Remove( child[1] );
                nodes.Add( parent );
            }

            IHashTable hash = new CHashTable();
            var firstOrDefault = nodes.FirstOrDefault();
            if (firstOrDefault != null) firstOrDefault.MakeHash( new List<bool>(), hash );

            return new CHuffmanTree {
                Root = nodes.FirstOrDefault(),
                HashTable = hash
            };
        }
Example #2
0
        public static void HashTableTest()
        {
            CHashTable <int, string> hashTable = new CHashTable <int, string>(10);

            hashTable.Insert(16, "야구");
            hashTable.Insert(26, "농구");
            hashTable.Insert(12, "축구");

            Console.WriteLine(hashTable.GetValue(16));
            Console.WriteLine(hashTable.GetValue(26));
            Console.WriteLine(hashTable.GetValue(12));
            Console.WriteLine(hashTable.GetValue(15));

            CHashTable <Foo, int> hashTable2 = new CHashTable <Foo, int>(14);

            Foo key1 = new Foo();

            key1.a = 1;
            Foo key2 = new Foo();

            key2.a = 4;

            hashTable2.Insert(key1, 11);
            hashTable2.Insert(key1, 14);
            hashTable2.Insert(key2, 24);

            Console.WriteLine(hashTable2.GetValue(key1));
            Console.WriteLine(hashTable2.GetValue(key2));

            hashTable2.Remove(key2);

            Console.WriteLine(hashTable2.GetValue(key2));

            hashTable.TestShow();
        }
Example #3
0
        static void Main()
        {
            var hashTable = new CHashTable<int,string>();

            hashTable.Add(0, "a");
            hashTable.Add(1, "b");
            hashTable.Add(2, "c");
            hashTable.Add(3, "a");
            hashTable.Add(4, "d");
            hashTable.Add(5, "e");
            hashTable.Add(0, "f");

            foreach (var item in hashTable)
            {
                Console.WriteLine(item.Key + " " + item.Value);
            }

            Console.WriteLine(hashTable.Contains(4).ToString());

            hashTable.Clear();

            Console.WriteLine(hashTable.Count);
        }
Example #4
0
 public void Clear()
 {
     this.count  = 0;
     this.values = new CHashTable <int, T>();
 }