ページ 11

オープンハッシュ

Posted: 2011年8月02日(火) 14:08
by yuuma
オープンハッシュについて質問です。

オープンハッツシュでの探索プログラムをつくる課題を取り組んでます。
いろいろネットや書籍で探すと、ほとんどのプログラムは構造体を

コード:

struct cell
{
int data; /* データ */
struct cell* next; /* 次のセルへのチェイン */
};
として
struct cell *table[TABLE_SIZE]; でハッシュテーブルを確保みたいなかんじでプログラムをつくっているみたいなのですが、厄介なことに学校の課題では構造体を

コード:

typedef struct {

int bucket_num;/* バケット総数 */
char *buckets;/* 各バケットに相当する連結リストへのポインタを格納するための配列に相当するポインタ */
}OpenHashTable;
としてプログラムをつくっていけという指定があり困ってます。
ここで疑問なんですが、

・構造体のメンバであるchar *bucketsの意味がいまいちわからない。buckets配列のn番目buckets[n]とは何なのか?
・プログラムをつくっていくにあたって、連結リストを表す構造体はいらないのか?

是非わかる方ご回答おねがいします。

Re: オープンハッシュ

Posted: 2011年8月02日(火) 15:03
by h2so5
yuuma さんが書きました:

コード:

struct cell
{
int data; /* データ */
struct cell* next; /* 次のセルへのチェイン */
};
これはオープンハッシュじゃなくて、チェインハッシュの構造ではないでしょうか?

Re: オープンハッシュ

Posted: 2011年8月02日(火) 15:11
by non
yuuma さんが書きました:

コード:

typedef struct {

int bucket_num;/* バケット総数 */
char *buckets;/* 各バケットに相当する連結リストへのポインタを格納するための配列に相当するポインタ */
}OpenHashTable;
としてプログラムをつくっていけという指定があり困ってます。
オープンアドレス法だと思われますが、キーが何か?ハッシュ値の求め方は?リハッシュの求め方は?など、課題として
与えられているものがほかにあるはずです。わからなければ、課題を出した先生に尋ねてください。
これだけの情報では私の頭ではわかりません。