オープンハッシュ

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
yuuma

オープンハッシュ

#1

投稿記事 by yuuma » 14年前

オープンハッシュについて質問です。

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

コード:

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]とは何なのか?
・プログラムをつくっていくにあたって、連結リストを表す構造体はいらないのか?

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

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: オープンハッシュ

#2

投稿記事 by h2so5 » 14年前

yuuma さんが書きました:

コード:

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

non
記事: 1097
登録日時: 15年前

Re: オープンハッシュ

#3

投稿記事 by non » 14年前

yuuma さんが書きました:

コード:

typedef struct {

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

閉鎖

“C言語何でも質問掲示板” へ戻る