1、一、 问题描述针对某个集体(比如你所在的班级)中的“人名”设计一个哈希表,使得平均查找长度均不超过 R,完成相应的建表和查表顺序。二、 基本要求假设人名为中国人姓名的汉语拼音形式。待填入哈希表的人名共有 30 个,取平均查找长度的上限为 2。哈希函数用除留余数法构造,用伪随机探测再散列法处理冲突。三、 概要设计1. 构造结构体:typedef struct;2. 姓名表的初始化:void InitNameTable();3. 建立哈希表:void CreateHashTable();4. 显示姓名表:void DisplayNameTable();5. 姓名查找:void FindName()
2、;6. 主函数:void main() ;四、 详细设计1. 姓名表的初始化void InitNameTable() NameTable0.py=“louyuhong“;NameTable1.py=“shenyinghong“;NameTable2.py=“wangqi“;NameTable3.py=“zhuxiaotong“;NameTable4.py=“zhataotao“;NameTable5.py=“chenbinjie“;NameTable6.py=“chenchaoqun“;NameTable7.py=“chencheng“;NameTable8.py=“chenjie“;Name
3、Table9.py=“chenweida“;NameTable10.py=“shanjianfeng“;NameTable11.py=“fangyixin“;NameTable12.py=“houfeng“;NameTable13.py=“hujiaming“;NameTable14.py=“huangjiaju“;NameTable15.py=“huanqingsong“;NameTable16.py=“jianghe“;NameTable17.py=“jinleicheng“;NameTable18.py=“libiao“;NameTable19.py=“liqi“;NameTable20
4、.py=“lirenhua“;NameTable21.py=“liukai“;NameTable22.py=“louhanglin“;NameTable23.py=“luchaoming“;NameTable24.py=“luqiuwei“;NameTable25.py=“panhaijian“;NameTable26.py=“shuxiang“;NameTable27.py=“suxiaolei“;NameTable28.py=“sunyubo“;NameTable29.py=“wangwei“;for (i=0;i#include /time 用到的头文件#include /随机数用到的头
5、文件#include /toascii()用到的头文件#include /查找姓名时比较用的头文件#define HASH_LEN 50 /哈希表的长度 #define P 47 /小于哈希表长度的 P#define NAME_LEN 30 /姓名表的长度 typedef struct /姓名表char *py; /名字的拼音int m; /拼音所对应的 NAME;NAME NameTableHASH_LEN; /全局定义姓名表typedef struct /哈希表char *py; /名字的拼音int m; /拼音所对应的 ASCII 总和int si; /查找长度HASH;HASH Has
6、hTableHASH_LEN; /全局定义哈希表int d30,i,j; /全局定义随机数,循环用的 i、jvoid InitNameTable() /姓名表的初始化 NameTable0.py=“louyuhong“;NameTable1.py=“shenyinghong“;NameTable2.py=“wangqi“;NameTable3.py=“zhuxiaotong“;NameTable4.py=“zhataotao“;NameTable5.py=“chenbinjie“;NameTable6.py=“chenchaoqun“;NameTable7.py=“chencheng“;Nam
7、eTable8.py=“chenjie“;NameTable9.py=“chenweida“;NameTable10.py=“shanjianfeng“;NameTable11.py=“fangyixin“;NameTable12.py=“houfeng“;NameTable13.py=“hujiaming“;NameTable14.py=“huangjiaju“;NameTable15.py=“huanqingsong“;NameTable16.py=“jianghe“;NameTable17.py=“jinleicheng“;NameTable18.py=“libiao“;NameTabl
8、e19.py=“liqi“;NameTable20.py=“lirenhua“;NameTable21.py=“liukai“;NameTable22.py=“louhanglin“;NameTable23.py=“luchaoming“;NameTable24.py=“luqiuwei“;NameTable25.py=“panhaijian“;NameTable26.py=“shuxiang“;NameTable27.py=“suxiaolei“;NameTable28.py=“sunyubo“;NameTable29.py=“wangwei“;for (i=0;iNAME_LEN;i+) /将字符串的各个字符所对应的 ASCII 码相加,所得的整数做为哈希表的关键字