示例#1
0
        //удаление элемента
        public bool TableDelete(long searchKey)
        {
            int key = this.HashIndex(searchKey);
            ChainNode currNode = this.table[key];
            ChainNode beforeCurrentNode = null;
 
            while (currNode != null && currNode.GetItem().GetKey() != searchKey)
            {
                beforeCurrentNode = currNode;
                currNode = currNode.GetNext();
            }
            if (currNode == null)
            {
                Console.WriteLine("Error, no such Item");
                return false;
            }
            else
            {
                if (beforeCurrentNode == null)
                {
                    this.table[key] = null;
                }
                else
                {
                    beforeCurrentNode.SetNextChainNode(currNode.GetNext());
                }
                this.NumberOfElements--;
                return true;
            }
            
        }
示例#2
0
 //tableItem - то, куда извлечём данные из хеш-таблицы
 public TableItemType TableRetrieve(long searchKey)
 {
     TableItemType tableItem = null;
     int key = this.HashIndex(searchKey);
     ChainNode p = this.table[key];
     while (p!=null && p.GetItem().GetKey() != searchKey)
     {
         p = p.GetNext();
     }
     if(p == null)
     {
         Console.WriteLine("Error, no such Item");
     }else
     {
         tableItem = p.GetItem();
     }
     return tableItem;
 } 
示例#3
0
 public void ShowHashTable()
 {
     int length = (int)HashTableSize.size;
     for(int i=0; i<length; i++)
     {
         if(this.table[i] != null)
         {
             Console.Write("Номер элемента массива: " );
             Console.Write(i);
             ChainNode p = this.table[i];
             while (p != null)
             {
                 Console.Write(" -> ");
                 Console.Write(p.GetItem().GetKey());
                 p = p.GetNext();
             }
             Console.WriteLine();
         }
     }
 }
示例#4
0
 public ChainNode(ChainNode _node)
 {
     this.item = _node.GetItem();
     this.next = _node.GetNext();
 }