Ejemplo n.º 1
0
        /// <summary>
        /// Внутренний рекурсивный метод поиска. Проходит по списку Position, находящихся после этой.
        /// Останавливается при обнаружении нужного элемента или по окончании списка.
        /// </summary>
        /// <param name="position"> Позиция, в которой ведется поиск. </param>
        /// <param name="keyedQuery"> Поисковый запрос, содержащий искомый объект. </param>
        private void Find(Position <V> position, KeyedSearchQuery <K, V> keyedQuery)
        {
            if (position == null)
            {
                keyedQuery.Count();
                return;
            }

            if (keyedQuery.Check(position.Element) == 0)
            {
                return;
            }

            Find(position.Next, keyedQuery);
        }
Ejemplo n.º 2
0
 public override void Find(int index, KeyedSearchQuery <K, V> keyedQuery)
 {
     for (int i = 0; i < _array.Length; i++)
     {
         int realIndex = (index + i * _mainFunction.Hash(keyedQuery.SearchKey())) % _array.Length;
         if (_array[realIndex] == null)
         {
             keyedQuery.Count();
             return;
         }
         if (keyedQuery.Check(_array[realIndex]) == 0 && !_deleted[realIndex])
         {
             return;
         }
     }
 }