Ejemplo n.º 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;
            }
            
        }
Ejemplo n.º 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;
 } 
Ejemplo n.º 3
0
     //public bool TableIsEmpty() { }
 
     public bool TableInsert(TableItemType _newItem)
     {
        
             ChainNode node = new ChainNode(_newItem);
             int key = this.HashIndex(_newItem.GetKey());
             if (this.table[key] != null)
             {
                 ChainNode tmp = this.table[key];
                 node.SetNextChainNode(tmp);
                 this.table[key] = node;
             }
             else
             {
                 this.table[key] = node;
             }
             this.NumberOfElements++;
             return true;
         
     }
Ejemplo n.º 4
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();
         }
     }
 }
Ejemplo n.º 5
0
 public void SetNextChainNode(ChainNode _item)
 {
     this.next = _item;
 }
Ejemplo n.º 6
0
 public ChainNode(ChainNode _node)
 {
     this.item = _node.GetItem();
     this.next = _node.GetNext();
 }
Ejemplo n.º 7
0
 public ChainNode(KeyedItem _item, ChainNode _next = null)
 {
     this.item = _item;
     this.next = _next;
 }