还剩6页未读,继续阅读
文本内容:
山东科技大学学生课程设计实习
6、哈希表设计需求分析
1.问题描述针对某个集体(比如你所在的班级)中的“人名”设计一个哈希表,使得平均查找长度均不超过R,完成相应的建表和查表顺序
2.基本要求假设人名为中国人姓名的汉语拼音形式待填入哈希表的人名共有30个,取平均查找长度的上限为2哈希函数用除留余数法构造,用伪随机探测再散列法处理冲突
3.测试数据取读者周围较熟悉的30个人的姓名
4.实现提示如果随机数自行构造,则应首先调整好随机函数,使其分布均匀人名的长度均不超过19个字符(最长的人名如庄双双(ZhuangShuangshuang))字符的取码方法可直接利用C语言中的toascii函数,并可先对过长的人名先作折叠处理
二、概要设计ADTHash{数据对象D D是具有相同特征的数据元素的集合各数据元素均含有类型相同,可唯一标识数据元素的关键字数据关系R数据元素同属一个集合InitNameTable操作结果初始化姓名表CreateHashTable操作结果建立哈希表DisplayNameTable操作结果显示姓名表DisplayHashTable操作结果显示哈希表FindName操作结果查找姓名}ADTHash
三、详细设计(源代码)(使用C语言)#includestdio.h#includetime.h//time用到的头文件#includestdlib.h//随机数用到的头文件#includectype.h//toascii用到的头文件#includestring.h//查找姓名时比较用的头文件#defineHASH_LEN50//哈希表的长度#defineP47//小于哈希表长度的P#defineNAME_LEN30//姓名表的长度typedefstruct{//姓名表char*py;//名字的拼音intm;//拼音所对应的}NAME;NAMENameTable[HASH_LEN];//全局定义姓名表typedefstruct{//哈希表char*py;//名字的拼音intm;//拼音所对应的ASCII总和intsi;//查找长度}HASH;...。