Example #1
0
        public HashTable(int initialSize, IHashFunction hashFunction)
        {
            buckets           = new ListString[initialSize];
            this.hashFunction = hashFunction;

            for (var i = 0; i < initialSize; ++i)
            {
                buckets[i] = new ListString();
            }
        }
Example #2
0
        public HeshTable(int size)
        {
            this.size = size;

            keyTable = new ListString[size];
            for (int i = 0; i < size; i++)
            {
                keyTable[i] = new ListString();
            }
        }
Example #3
0
        /// <summary>
        /// Приватный метод который расширяет хэш таблицу при необходимости
        /// </summary>
        private void Extension()
        {
            var newBuckets = new ListString[2 * buckets.Length + 1];

            for (var i = 0; i < newBuckets.Length; ++i)
            {
                newBuckets[i] = new ListString();
            }

            foreach (var oldList in buckets)
            {
                for (var i = 0; i < oldList.Size(); ++i)
                {
                    var str  = oldList.Remove();
                    var hash = hashFunction.HashFunction(str) % newBuckets.Length;
                    hash = hash >= 0 ? hash : -hash;
                    newBuckets[hash].Add(str);
                }
            }
            buckets = newBuckets;
        }