?? 9.44.c
字號:
9.44④ 已知某哈希表的裝載因子小于1,哈希函數(shù)
H(key)為關(guān)鍵字(標(biāo)識符)的第一個(gè)字母在字母表中
的序號,處理沖突的方法為線性探測開放定址法。
試編寫一個(gè)按第一個(gè)字母的順序輸出哈希表中所有
關(guān)鍵字的算法。
實(shí)現(xiàn)下列函數(shù):
void PrintKeys(HashTable ht, void(*print)(StrKeyType));
/* 依題意用print輸出關(guān)鍵字 */
哈希表的類型HashTable定義如下:
#define SUCCESS 1
#define UNSUCCESS 0
#define DUPLICATE -1
typedef char StrKeyType[4];
typedef struct {
StrKeyType key;
void *any;
} HElemType;
int hashsize[] = { 7,11,17,23,29,37,47 };
typedef struct {
HElemType elem[MAXLEN];
int count;
int sizeindex;
} HashTable;
int Hash(char *s);
void PrintKeys(HashTable ht, void(*print)(StrKeyType))
/* 依題意用print輸出關(guān)鍵字 */
{
int i,j;
for(i=0;i<=25;i++)
for(j=i%hashsize[ht.sizeindex];j!=(i+hashsize[ht.sizeindex]-1)%hashsize[ht.sizeindex];j=(j+1)%hashsize[ht.sizeindex])
if(Hash(ht.elem[j].key)==i)
print(ht.elem[j].key);
}
int Hash(char *s)
{
if(s)
if(0<=s[0]-65<=25) return s[0]-65;
else return 100;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -