⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 9.44.c

📁 数据结构习题及答案
💻 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 + -