これは、文字列値を格納するハッシュテーブルのコードです。「挿入」関数で線形プローブを使用するには、その特定のハッシュ値でポインターがNULLかどうかを確認する必要があります。挿入関数をまだ完了していませんが、挿入関数内のif(the_hash_table [n] == NULL)をチェック すると、ブランチに入らないため、スタックしています。「the_hash_table[1]」を出力すると値をハッシュする前に「faz」が出力されますが、そのステップの後で出力すると、いくつかの奇妙な文字が出力されます。どこが間違っているのですか?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
creates a hash table of size 10
*/
char** create_hash_table(){
char* the_hash_table[10]; // defines a hash table to store strings
*the_hash_table=malloc(sizeof(char*)*10); // allocates memory in the heap for the hash table
int i;
for(i=0;i<10;i++){ // this loop initializes the string pointers to NULL at the starting point of the hash table
the_hash_table[i]=NULL;
}
return &the_hash_table; // returns the address of the hash table to the main memory
}
/*
this is a method to insert a string into the relevant position of the hash table
*/
void insert(char* the_string,char** the_hash_table){
printf("%s",the_hash_table[1]);
int n=hash(the_string);
printf("%s",the_hash_table[1]);
if(the_hash_table[n] == NULL)
the_hash_table[n]=the_string;
}