哈希

发布时间:2024-01-16 22:42:18   来源:文档文库   
字号:
哈西表设计
#include

#include //time用到的头文件 #include //随机数用到的头文件 #include //toascii(用到的头文件
#include //查找姓名时比较用的头文件
#define HASH_LEN 50 //哈希表的长度 #define P 47 //小于哈希表长度的P #define NAME_LEN 30 //姓名表的长度

typedef struct //姓名表 {

char *py; //名字的拼音
int m; //拼音所对应的
}NAME; NAME NameTable[HASH_LEN]; //全局定义姓名表

typedef struct //哈希表
{ char *py; //名字的拼音
int m; //拼音所对应的ASCII总和 int si; //查找长度
}HASH; HASH HashTable[HASH_LEN]; //全局定义哈希表

int d[30],i,j; //全局定义随机数,循环用的ij void InitNameTable( //姓名表的初始化
{
NameTable[0].py="lihao"; NameTable[1].py="caodongsen"; NameTable[2].py="luotong"; NameTable[3].py="jiaohuan";
NameTable[4].py="xiongbo"; NameTable[5].py="zhaowenming"; NameTable[6].py="qinxiaoqing"; NameTable[7].py="yangjiangchao"; NameTable[8].py="huangguiying"; NameTable[9].py="hecong"; NameTable[10].py="sunjiajian"; NameTable[11].py="lanhuibao"; NameTable[12].py="lichangjun"; NameTable[13].py="wangxiaodong"; NameTable[14].py="lichuang";
NameTable[15].py="lizhipeng";
NameTable[16].py="mulixiang"; NameTable[17].py="wangyang"; NameTable[18].py="zhangzheng";
NameTable[19].py="ailei"; NameTable[20].py="wangyunlei"; NameTable[21].py="zhaolongtao"; NameTable[22].py="suohanfei"; NameTable[23].py="liaoqinqin"; NameTable[24].py="yangxiaoni"; NameTable[25].py="liuruixue";
NameTable[26].py="wumeng"; NameTable[27].py="yangmiaomiao"; NameTable[28].py="qinyuan";
NameTable[29].py="yangtong"; for (i=0;i //将字符串的各个字符所对应的ASCII码相加,所得的整数做为哈希表的关键字
{
int s=0;
char *p=NameTable[i].py; for (j=0;*(p+j!='\0';j++ s+=toascii(*(p+j; NameTable[i].m=s; } }
void CreateHashTable( //建立哈希表
{ for(i=0;i
{ HashTable[i].py="\0"; HashTable[i].m =0; HashTable[i].si=0;
} for(i=0;i
{
int sum=1,j=0; int adr=(NameTable[i].m%P; //除留余数法 H(key=key MOD p,p<=m if(HashTable[adr].si==0 //如果不冲突,将姓名表赋值给哈希表
{ HashTable[adr].m =NameTable[i].m; HashTable[adr].py=NameTable[i].py; HashTable[adr].si=1;
} else //如果冲突


本文来源:https://www.2haoxitong.net/k/doc/4de1a0f2aef8941ea76e05f7.html

《哈希.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式