C言語でハッシュテーブルを作成する方法は何ですか?

C言語では、次の手順に従ってハッシュテーブルを作成できます。

  1. ハッシュテーブル構造体を定義し、データを格納するための固定サイズの配列および各位置にデータがあるかどうかを示すフラグ配列の2つのメンバーを含めます。例えば:
#define SIZE 10

typedef struct {
    int data[SIZE];
    int flags[SIZE];
} HashTable;
  1. ハッシュテーブルを初期化し、配列内のすべての要素とフラグ配列を初期値(例えば0)に設定します。
void initializeHashTable(HashTable* hashTable) {
    int i;
    for(i = 0; i < SIZE; i++) {
        hashTable->data[i] = 0;
        hashTable->flags[i] = 0;
    }
}
  1. ハッシュ関数を実装し、挿入するデータをハッシュテーブルの位置にマップします。一般的なハッシュ関数には、割り算ハッシュ法、乗算ハッシュ法、二乗中間法などがあります。例えば、以下は簡単な割り算ハッシュ法です。
int hashFunction(int key) {
    return key % SIZE;
}
  1. ハッシュテーブルの対応する位置にデータを挿入する挿入操作を実行します。その位置にすでにデータがある場合は、衝突処理戦略(線形探査法、二次探査法、チェイン法など)に従って次に利用可能な位置を見つけます。
void insert(HashTable* hashTable, int key) {
    int index = hashFunction(key);
    while(hashTable->flags[index] != 0) {
        index = (index + 1) % SIZE; // 线性探测法
    }
    hashTable->data[index] = key;
    hashTable->flags[index] = 1;
}
  1. 与所给关键字相符时,在哈希表中实现查找操作以查找相应的数据。
int search(HashTable* hashTable, int key) {
    int index = hashFunction(key);
    while(hashTable->flags[index] != 0) {
        if(hashTable->data[index] == key) {
            return index;
        }
        index = (index + 1) % SIZE;
    }
    return -1; // 表示未找到
}

簡単なハッシュテーブルを作成することができます。実際のアプリケーションでは、必要に応じて拡張や削除操作を行うことができます。

bannerAds