📄 9.44.c
字号:
9.44④ 已知某哈希表的装载因子小于1,哈希函数
H(key)为关键字(标识符)的第一个字母在字母表中
的序号,处理冲突的方法为线性探测开放定址法。
试编写一个按第一个字母的顺序输出哈希表中所有
关键字的算法。
实现下列函数:
void PrintKeys(HashTable ht, void(*print)(StrKeyType));
/* 依题意用print输出关键字 */
哈希表的类型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输出关键字 */
{
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;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -