C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

連鎖によるハッシュのためのC++プログラム


ハッシュは、任意の長さのデータ要素を固定サイズのキーにマップできる方法です。ハッシュはキーと値のペアとして機能します。

ハッシュ関数は、ハッシュマップでマッピングを行う関数です。ハッシュ関数への入力として指定されたデータ要素は、同じハッシュキーを取得する場合があります。この場合、要素が重複する可能性があります。同じハッシュキーを持つ要素の重複を避けるために、連鎖の概念が導入されました。

ハッシュマップの作成

ハッシュマップを作成するには、データ要素のインデックス値を定義するハッシュ関数が必要です。

n個のバケットを持つハッシュテーブルがあります。ノードをハッシュテーブルに挿入するには 、ハッシュ関数が与えられます

hashIndex =key%noOfBuckets

次に、このハッシュ関数を使用して、ハッシュマップに挿入されたすべての値のハッシュインデックスを計算します。 。

  • 要素を挿入し、指定されたキー値のhashIndexを計算してから、新しいノードをリストの最後に挿入します。

  • ノードを削除するには、ハッシュインデックスを計算し、ハッシュインデックスに対応するバケットで、バケット内の要素を検索して削除します。

#include<iostream>
#include <list>
using namespace std;
class Hash{
   int BUCKET;
   list < int >*table;
   public:
   Hash (int V);
   void insertItem (int x);
   void deleteItem (int key);
   int hashFunction (int x){
      return (x % BUCKET);
   }
   void displayHash ();
};
Hash::Hash (int b){
   this->BUCKET = b;
   table = new list < int >[BUCKET];
}
void Hash::insertItem (int key){
   int index = hashFunction (key);
   table[index].push_back (key);
}
void Hash::deleteItem (int key){
   int index = hashFunction (key);
   list < int >::iterator i;
   for (i = table[index].begin (); i != table[index].end (); i++){
   if (*i == key)
      break;
   }
   if (i != table[index].end ())
      table[index].erase (i);
}
void Hash::displayHash (){
   for (int i = 0; i < BUCKET; i++){
      cout << i;
      for (auto x:table[i])
      cout << " --> " << x;
      cout << endl;
   }
}
 int main (){
   int a[] = { 5, 12, 67, 9, 16 };
   int n = 5;
   Hash h (7);
   for (int i = 0; i < n; i++)
   h.insertItem (a[i]);
   h.deleteItem (12);
   h.displayHash ();
   return 0;
}

出力

0
1
2 --> 9 --> 16
3
4 --> 67
5 --> 5
6

  1. 配列要素の乗算のためのC++プログラム

    整数要素の配列で与えられ、タスクは配列の要素を乗算して表示することです。 例 Input-: arr[]={1,2,3,4,5,6,7} Output-: 1 x 2 x 3 x 4 x 5 x 6 x 7 = 5040 Input-: arr[]={3, 4,6, 2, 7, 8, 4} Output-: 3 x 4 x 6 x 2 x 7 x 8 x 4 = 32256 以下のプログラムで使用されるアプローチは次のとおりです − 一時変数を初期化して、最終結果を1で格納します ループを0からnまで開始します。nは配列のサイズです 最終結果を得るには、tempの値にarr[i]を掛け続

  2. C++での8進数から10進数への変換のプログラム

    入力として8進数を指定すると、タスクは指定された8進数を10進数に変換することです。 コンピューターの10進数は10進数で表され、8進数は0から7までの8進数で表されますが、10進数は0から9までの任意の数字にすることができます。 8進数を10進数に変換するには、次の手順に従います- 余りから右から左に数字を抽出し、それを0から始まる累乗で乗算し、(桁数)–1まで1ずつ増やします。 8進数から2進数に変換する必要があるため、8進数の基数は8であるため、累乗の基数は8になります。 指定された入力の桁にベースとパワーを掛けて、結果を保存します 乗算されたすべての値を加算して、10進数になる